▄▄▄▄                          ▄▄▄▄
  █                              █   █
  █▄▄▄▄▄  ▄▄▄  ▄   ▄ ▄▄▄▄  ▄▄▄▄  █▄▄▄█▄ ▄      ▄▄▄  ▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄
       █ █   █ █   █ █   █ █   █ █    █ █     █▄▄▄█ █▄▄▄▄   █    █▄▄   █▄▄▄▀
       █ █   █ █   █ █   █ █   █ █    █ █     █   █     █   █    █     █   █
  ▀▀▀▀▀▀ ▀▀▀▀▀  ▀▀▀▀ ▀   ▀ ▀▀▀▀  ▀▀▀▀▀▀ ▀▀▀▀▀ ▀   ▀ ▀▀▀▀▀   ▀    ▀▀▀▀▀ ▀   ▀
                       Programming Information v0.90
                              January 29, 1995

                       André Baresel - Craig Jackson
                             Copyright (c) 1995



==============================================================================
 DISCLAIMER
------------------------------------------------------------------------------

  ALL INFORMATION IN THIS DOCUMENT WAS OBTAINED FROM NON-CONFIDENTIAL, PUBLIC
  DOMAIN, SOURCES AND LEGAL INVESTIGATION BY THE AUTHORS.  APART FROM CASUAL
  EXAMININATION OF THE SOUNDBLASTER OWNER'S MANUALS, ABSOLUTELY NO REFERENCE
  WAS MADE TO CREATIVE LABS DOCUMENTATION INCLUDING, BUT NOT LIMITED TO,
  SOFTWARE DEVELOPMENT KITS, PROGRAMMING NOTES, AND SOURCE CODE.

  THIS DOCUMENT IS NEITHER GUARANTEED TO BE FIT FOR ANY PARTICULAR PURPOSE NOR
  TO BE ENTIRELY CORRECT.  LIABILITY RESTS WITH THE USER OF THE DOCUMENTATION
  IF AND WHEN INFORMATION CONTAINED HEREIN RESULTS DIRECTLY OR INDIRECTLY IN
  LOSS OF PROFITS, PRODUCTIVITY, OR SLEEP.  ABSOLUTELY NO WARRANTIES OR
  GUARANTIES, EITHER EXPRESSED OR IMPLIED, ACCOMPANY THIS DOCUMENT.  THIS
  DOCUMENT, ITS AUTHORS, AND CONTRIBUTORS CLAIM NO AFFILIATION WITH CREATIVE
  LABS NOR DO THEY NECESSARILY ENDORSE ANY OF THE COMPANIES OR PRODUCTS
  MENTIONED.  THIS DOCUMENT IS FREELY REDISTRIBUTABLE ONLY IN ITS ORIGINAL
  UNMODIFIED FORM AND PROVIDED NO DIRECT PROFIT IS MADE FROM ITS DISTRIBUTION.  
  ALL COPYRIGHTS AND TRADEMARKS BELONG TO THEIR RESPECTIVE OWNERS.

==============================================================================
 SOUNDBLASTER MODELS
------------------------------------------------------------------------------
  SoundBlaster 1.0
  SoundBlaster 1.5            
  SoundBlaster 2.0                        
  SoundBlaster MCV (MCA)
  SoundBlaster Pro
  SoundBlaster Pro2                       
  SoundBlaster Pro Value Edition
  SoundBlaster Pro MCV (MCA)
  SoundBlaster 16
  SoundBlaster 16 Basic Edition
  SoundBlaster 16 Value Edition
  SoundBlaster 16 ASP
  SoundBlaster 16 MultiCD
  SoundBlaster 16 MultiCD ASP
  SoundBlaster 16 SCSI-2
  SoundBlaster 16 SCSI-2 ASP
  SoundBlaster AWE32                                                
  SoundBlaster AWE32 Value Edition

 ╔═══════════════════════╤═══════════════════╤═══════════════════╗
 ║ SOUNDBLASTER MODEL    │  8-BIT Hz (DAC)   │  16-BIT Hz (DAC)  ║
 ║                       │       MONO        │       MONO        ║
 ╠═══════════════════════╪═══════════════════╪═══════════════════╣
 ║  SoundBlaster 1.x     │    4000-22222     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 2.x     │    4000-45454     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster Pro     │    4000-45454     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
 ╚═══════════════════════╧═══════════════════╧═══════════════════╝
 ╔═══════════════════════╤═══════════════════╤═══════════════════╗
 ║ SOUNDBLASTER MODEL    │  8-BIT Hz (DAC)   │  16-BIT Hz (DAC)  ║
 ║                       │      STEREO       │      STEREO       ║
 ╠═══════════════════════╪═══════════════════╪═══════════════════╣
 ║  SoundBlaster 1.x     │        N/A        │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 2.x     │        N/A        │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster Pro     │    4000-22727     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
 ╚═══════════════════════╧═══════════════════╧═══════════════════╝

 ╔═══════════════════════╤═══════════════════╤═══════════════════╗
 ║ SOUNDBLASTER MODEL    │  8-BIT Hz (ADC)   │  16-BIT Hz (ADC)  ║
 ║                       │       MONO        │       MONO        ║
 ╠═══════════════════════╪═══════════════════╪═══════════════════╣
 ║  SoundBlaster 1.x     │    4000-11111     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 2.x     │    4000-15151     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster Pro     │    4000-45454     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
 ╚═══════════════════════╧═══════════════════╧═══════════════════╝
 ╔═══════════════════════╤═══════════════════╤═══════════════════╗
 ║ SOUNDBLASTER MODEL    │  8-BIT Hz (ADC)   │  16-BIT Hz (ADC)  ║
 ║                       │      STEREO       │      STEREO       ║
 ╠═══════════════════════╪═══════════════════╪═══════════════════╣
 ║  SoundBlaster 1.x     │        N/A        │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 2.x     │        N/A        │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster Pro     │    4000-22727     │        N/A        ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster 16      │    4000-45454     │     4000-45454    ║
 ╟───────────────────────┼───────────────────┼───────────────────╢
 ║  SoundBlaster AWE32   │    5000-45454     │     5000-45454    ║
 ╚═══════════════════════╧═══════════════════╧═══════════════════╝

==============================================================================
 SOUNDBLASTER COMPATIBLES 
------------------------------------------------------------------------------
 ???                         AudioDrive 688
 ???                         Laserwave Supra 16
 ???                         MediaConcept Pro
 Adaptec                     Audio Machine???
 Addonics???                 Sound Master
 Add Tech                    Sound 2000
 Advanced Gravis             Gravis Ultrasound
                             Gravis Ultrasound MAX
 Alpha Systems               VR
 ATI                         ATI Stereo F/X
 AVM Technology              AltraPro
 Aztech                      Sound Galaxy???
                             Sound Galaxy BXII
                             Sound Galaxy BXII Extra
                             Sound Galaxy Basic 16
                             Sound Galaxy Basic 16 Extra
                             Sound Galaxy Nova 16 
                             Sound Galaxy NXII
                             Sound Galaxy NX Pro
                             Sound Galaxy Orion 16
                             Sound Galaxy Pro???
                             Sound Galaxy Pro 16
 Biostar???                  MediaChips Audio Device 16 (7168VMD)
 Bluepoint                   Sound FX 3000???
 Cardinal Technologies       Digital Sound Pro 16
                             Sound Pilot
 Computer Peripherals        ViVa Maestro 16
                             ViVa Maestro 16 VR
 CPS                         AudioBlaster 1.0
                             AudioBlaster 1.5
                             AudioBlaster 2.0
                             AudioBlaster 2.5
                             AudioBlaster 4.0
 Diamond                     Sonic Sound
                             Sonic Sound LX
 DSP Solutions               PORT*ABLE Sound Plus
 Ensoniq                     Ensoniq Soundscape
 Gallant                     Audio Plus True 16
 Genoa Systems               AudioBahn 16 Pro
 IBM                         IBM Windsurfer
 Kingston Technologies       Omnivox
 Logitech Inc.               Soundman 16
                             Soundman Wave
 Lyben                       Sound Card Basic
                             Sound Card 16 Stereo
 MediaMagic                  OnMagic???
 MediaTrix                   AudioTrix Pro
 MediaVision                 Deluxe
                             Premium 3D
                             Premium 3D MultiCD
                             Premium 3D SCSI-2
                             Pro 3D   
                             Pro Audio 16 Basic
                             Pro Audio Spectrum 16
                             Pro Audio Studio
                             Pro Sonic 16
 MEI                         Premium 16 Sound Card
 Microsoft                   Windows Sound System 2.0???
 MultiWave Innovation Inc.   AudioWave Platinum 16
 Nu Reality                  Vivid 3D???
 Oak Technologies            Mozart-128
 Orchid                      GameWave 32
                             Sound Producer
                             SoundWave 32
 Paradise                    Audio Basic
                             Audio Professional
 ProLink Computer Inc.       SoundPlus
 Prometheus                  Aria 16
                             Aria 16se       
 Reveal                      Sound FX/32 Wavetable (SC600)
 Sigma Designs               Reel Magic
 Triumph Logistic Computers  Audio Forge Professional
 Trust                       Sound Expert 16 Deluxe
 Turtle Beach                Monte Carlo                
                             Tropez   
 Yamaha                      Yamaha CBX-B1
 Zoltrix                     TESS

==============================================================================
 ENVIRONMENT VARIABLE
------------------------------------------------------------------------------
 BLASTER=Aa Ii Dd Hh Pp Tt
   Aa - Base Address                    0210h, 0220h, 0230h, 0240h, 
                                            0250h, 0260h, 0280h
   Ii - Interrupt Request                     2, 3, 5, 7, 10
   Dd - DMA Channel, 8-bit                       0, 1, 3
   Hh - DMA Channel, 16-bit                      5, 6, 7
   Pp - Base MIDI Address                      0300h, 0330h
   Tt - Model                        1(1.x), 2(Pro), 3(2.0), 4(Pro2.0), 
                                           5(ProMCV), 6(16, AWE32)

 NOTE: 16-bit DMA definition may actually refer to an 8-bit DMA alias.

==============================================================================
 HARDWARE PORTS
------------------------------------------------------------------------------
 02x00h         C/MS 1-6 - Data Port                    Write       SB Only
 02x00h         FM Music - Left Status Port             Read        SBPro
 02x00h         FM Music - Left Register Port           Write       SBPro
 02x01h         C/MS 1-6 - Register Port                Write       SB Only
 02x01h         FM Music - Left Data Register           Write       SBPro
 02x02h         C/MS7-12 - Data Port                    Write       SB Only
 02x02h         FM Music - Right Status Port            Read        SBPro
 02x02h         FM Music - Right Register Port          Write       SBPro
 02x03h         C/MS7-12 - Register Port                Write       SB Only
 02x03h         FM Music - Right Data Register          Write       SBPro
 02x04h         Mixer - Register Port                   Write       SBPro
 02x05h         Mixer - Data Register                   Read/Write  SBPro
 02x06h         DSP - Reset                             Write       SB
 02x08h         FM Music - Compatible Status Port       Read        SB
 02x08h         FM Music - Compatible Register Port     Write       SB
 02x09h         FM Music - Compatible Data Register     Write       SB
 02x0Ah         DSP - Read Data                         Read        SB
 02x0Ch         DSP - Write Data or Command             Write       SB
 02x0Ch         DSP - Write Buffer Status               Read        SB
 02x0Dh         DSP - Timer Interrupt Clear             Read        SB16???
 02x0Eh         DSP - Data Available Status             Read        SB
 02x0Eh         DSP - IRQ Acknowledge, 8-bit            Read        SB
 02x0Fh         DSP - IRQ Acknowledge, 16-bit           Read        SB16
 02x10h         CD-ROM - Data Register                  Read        SBPro
 02x10h         CD-ROM - Command Port                   Write       SBPro
 02x11h         CD-ROM - Status Port                    Read        SBPro
 02x12h         CD-ROM - Reset                          Write       SBPro
 02x13h         CD-ROM - Enable                         Write       SBPro
 0388h          AdLib - Status Port                     Read        SB
 0388h          AdLib - Register Port                   Write       SB
 0389h          AdLib - Data Register                   Write       SB
 038Ah          Advanced AdLib - Status Port            Read        SB16
 038Ah          Advanced AdLib - Register Port          Write       SB16
 038Bh          Advanced AdLib - Data Register          Write       SB16
 03x00h         MPU-401 - Data Port                     Read/Write  SB16???
 03x01h         MPU-401 - Status Port                   Read        SB16???
 03x01h         MPU-401 - Command Port                  Write       SB16???
 0200h-0207h    Joystick                                Varies      SB

------------------------------------------------------------------------------
 02x00h     C/MS - Data Port     (Voice 1-6)            Write       SB Only

    DESCRIPTION
     References currently selected C/MS voice 1-6 index register.

    PROCEDURE
      a) Write register index (02x01h)
      b) Write register data  (02x00h)

    SEE ALSO
     02x01h  C/MS - Register Port (Voice 1- 6)  Write
     ·····················································
     02x02h  C/MS - Data Port     (Voice 7-12)  Write
------------------------------------------------------------------------------
 02x00h     FM Music - Left Status Port                 Read        SBPro

    DESCRIPTION
     Categorizes left-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (1)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┘
       │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
       │   └─────────────────────────── Timer 1 Status      (1 = Expired)
       └─────────────────────────────── Global Timer Status (1 = Active )

    NOTES
     ■ Global Timer Status will be active if either timer has expired.
     ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
     ■ Synthesizer generated timer interrupts are signalled on IRQ0.

    SEE ALSO
     02x00h  FM Music - Left Register Port      Write
     02x01h  FM Music - Left Data Register      Write
     ·····················································
     02x08h  FM Music - Compat. Status Port     Read
      0338h  AdLib    - Status Port             Read
     ·····················································
     02x02h  FM Music - Right Status Port       Read
------------------------------------------------------------------------------
 02x00h     FM Music - Left Register Port               Write       SBPro

    DESCRIPTION
     Selects register index into left-channel synthesizer data port (02x01h)

    PROCEDURE
      a) Write register index (02x00h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (02x01h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x00h  FM Music - Left Status Port        Read
     02x01h  FM Music - Left Data Register      Write
     ·····················································
     02x08h  FM Music - Compat. Register Port   Write
      0338h  AdLib    - Register Port           Write
     ·····················································
     02x02h  FM Music - Right Register Port     Write
------------------------------------------------------------------------------
 02x01h     C/MS - Register Port (Voice 1-6)            Write       SB Only

    DESCRIPTION
     Selects register index into C/MS voice 1-6 data port (02x00h)

    PROCEDURE
      a) Write register index (02x01h)
      b) Write register data  (02x00h)

    SEE ALSO
     02x00h  C/MS - Data Port     (Voice 1- 6)  Write
     ·····················································
     02x03h  C/MS - Register Port (Voice 7-12)  Write
------------------------------------------------------------------------------
 02x01h     FM Music - Left Data Register               Write       SBPro

    DESCRIPTION
     References currently selected left-channel synthesizer index register.

    PROCEDURE
      a) Write register index (02x00h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (02x01h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x00h  FM Music - Left Status Port        Read
     02x00h  FM Music - Left Register Port      Write
     ·····················································
     02x09h  FM Music - Compat. Data Register   Write
      0339h  AdLib    - Data Register           Write
     ·····················································
     02x03h  FM Music - Right Data Register     Write
------------------------------------------------------------------------------
 02x02h     C/MS - Data Port     (Voice 7-12)           Write       SB Only

    DESCRIPTION
     References currently selected C/MS voice 7-12 index register.

    PROCEDURE
      a) Write register index (02x03h)
      b) Write register data  (02x02h)

    SEE ALSO
     02x03h  C/MS - Register Port (Voice 7-12)  Write
     ·····················································
     02x00h  C/MS - Data Port     (Voice 1- 6)  Write
------------------------------------------------------------------------------
 02x02h     FM Music - Right Status Port                Read        SBPro

    DESCRIPTION
     Categorizes right-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (1)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┘
       │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
       │   └─────────────────────────── Timer 1 Status      (1 = Expired)
       └─────────────────────────────── Global Timer Status (1 = Active )

    NOTES
     ■ Global Timer Status will be active if either timer has expired.
     ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
     ■ Synthesizer generated timer interrupts are signalled on IRQ0.

    SEE ALSO
     02x02h  FM Music - Right Register Port     Write
     02x03h  FM Music - Right Data Register     Write
     ·····················································
      038Ah  A. Adlib - Status Port             Read
     ·····················································
     02x00h  FM Music - Left Status Port        Read
------------------------------------------------------------------------------
 02x02h     FM Music - Right Register Port              Write       SBPro

    DESCRIPTION
     Selects register index into right-channel synthesizer data port (02x03h)

    PROCEDURE
      a) Write register index (02x02h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (02x03h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the right speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x02h  FM Music - Right Status Port       Read
     02x03h  FM Music - Right Data Register     Write
     ·····················································
      038Ah  A. Adlib - Register Port           Write
     ·····················································
     02x00h  FM Music - Left Register Port      Write
------------------------------------------------------------------------------
 02x03h     C/MS - Register Port (Voice 7-12)           Write       SB Only

    DESCRIPTION
     Selects register index into C/MS voice 7-12 data port (02x02h)

    PROCEDURE
      a) Write register index (02x03h)
      b) Write register data  (02x02h)

    SEE ALSO
     02x02h  C/MS - Data Port     (Voice 7-12)  Write
     ·····················································
     02x01h  C/MS - Register Port (Voice 1- 6)  Write
------------------------------------------------------------------------------
 02x03h     FM Music - Right Data Register              Write       SBPro

    DESCRIPTION
     References currently selected right-channel synthesizer index register.

    PROCEDURE
      a) Write register index (02x02h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (02x03h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the right speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.

    SEE ALSO
     02x02h  FM Music - Right Status Port       Read
     02x02h  FM Music - Right Register Port     Write
     ·····················································
      038Bh  A. Adlib - Data Register           Write
     ·····················································
     02x01h  FM Music - Left Data Register      Write
------------------------------------------------------------------------------
 02x04h     Mixer - Register Port                       Write       SBPro

    DESCRIPTION
     Selects register index into mixer data port (02x05h)

    SELECTION BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Mixer Register Index bit   0 (SB16)
       │   │   │   │   │   │   └─────┬─ Mixer Register Index bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Mixer Register Index bit   4 (SB16)
       │   │   └─────────────────────┬─ Mixer Register Index bit 7-5 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    PROCEDURE
      a) Write mixer index     (02x04h)
      b) Read/write mixer data (02x05h)

    NOTES
     ■ See complete mixer reference later in this document.
     ■ MediaVision 3D-series cards use this port for index and data output.

    SEE ALSO
     02x05h  Mixer - Data Register              Read/Write
------------------------------------------------------------------------------
 02x05h     Mixer - Data Register                       Read/Write  SBPro

    DESCRIPTION
     References currently selected mixer index register.

    PROCEDURE
      a) Write mixer index     (02x04h)
      b) Read/write mixer data (02x05h)

    NOTES
     ■ See complete mixer reference later in this document.

    SEE ALSO
     02x05h  Mixer - Register Port              Write
------------------------------------------------------------------------------
 02x06h     DSP - Reset                                 Write       SB

    DESCRIPTION
     Performs complete reset of DSP, terminating all pending operations.

    PROCEDURE
      a) Write 001h
      b) Wait 3.3µs minimum
      c) Write 000h
      d) Wait 100µs maximum for DSP Data Available (02x0Eh)
      e) Read 0AAh from DSP Read Data (02x0Ah)

    NOTES
     ■ Reset of DSP disables speaker (see DSP command 0D3h).
------------------------------------------------------------------------------
 02x08h     FM Music - Compatible Status Port           Read        SB

    DESCRIPTION
     Categorizes left-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (1)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┘
       │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
       │   └─────────────────────────── Timer 1 Status      (1 = Expired)
       └─────────────────────────────── Global Timer Status (1 = Active )

    NOTES
     ■ Global Timer Status will be active if either timer has expired.
     ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
     ■ Synthesizer generated timer interrupts are signalled on IRQ0.
     ■ Alias for FM Music - Left Status Port (02x00h) on SBPro or higher.

    SEE ALSO
     02x08h  FM Music - Compat. Register Port   Write
     02x09h  FM Music - Compat. Data Register   Write
     ·····················································
     02x00h  FM Music - Left Status Port        Read
------------------------------------------------------------------------------
 02x08h     FM Music - Compatible Register Port         Write       SB

    DESCRIPTION
     Selects register index into left-channel synthesizer data port (02x09h)

    PROCEDURE
      a) Write register index (02x08h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (02x09h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     ■ Alias for FM Music - Left Register Port (02x00h) on SBPro or higher.

    SEE ALSO
     02x08h  FM Music - Compat. Status Port     Read
     02x09h  FM Music - Compat. Data Register   Write
     ·····················································
     02x00h  FM Music - Left Register Port      Write
------------------------------------------------------------------------------
 02x09h     FM Music - Compatible Data Register         Write       SB

    DESCRIPTION
     References currently selected left-channel synthesizer index register.

    PROCEDURE
      a) Write register index (02x08h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (02x09h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     ■ Alias for FM Music - Left Data Register (02x01h) on SBPro or higher.

    SEE ALSO
     02x08h  FM Music - Compat. Status Port     Read
     02x08h  FM Music - Compat. Register Port   Write
     ·····················································
     02x01h  FM Music - Left Data Register      Write
------------------------------------------------------------------------------
 02x0Ah     DSP - Read Data                             Read        SB

    DESCRIPTION
     Input port for DSP data byte reads.

    PROCEDURE
      a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
      b) Input byte from DSP Read Data port (02x0Ah read)

    NOTES
     ■ Hard system resets occasionally cause some DSPs to leave an
        extraneous data byte on the bus (typically 0AAh).  Perform
        an explicit DSP reset at application startup to correct for this.

    SEE ALSO
     02x0Eh  DSP - Data Available Status        Read
     ·····················································
     02x0Ch  DSP - Write Data or Command        Write
     ·····················································
     02x06h  DSP - Reset                        Write
----------------------------------------------------------------------------
 02x0Ch     DSP - Write Data or Command                 Write       SB

    DESCRIPTION
     Output port for DSP command and data byte writes.

    PROCEDURE
      a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
      b) Output byte to DSP Write Data or Command port (02x0Ch write)

    SEE ALSO
     02x0Ch  DSP - Write Buffer Status          Read
     ·····················································
     02x0Ah  DSP - Read Data                    Read
------------------------------------------------------------------------------
 02x0Ch     DSP - Write Buffer Status                   Read        SB

    DESCRIPTION
     Indicates whether or not DSP is ready to receive data through
      the DSP Write Data or Command port (02x0Ch write).

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │[6]│[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (?)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┘
       └─────────────────────────────── Write Buffer Status (0 = Ready)

    PROCEDURE
      a) Loop until bit 7 = 0 of DSP Write Buffer Status (02x0Ch read)
      b) Output byte to DSP Write Data or Command port (02x0Ch write)

    SEE ALSO
     02x0Ch  DSP - Write Data or Command        Write
     ·····················································
     02x0Eh  DSP - Data Available Status        Read
------------------------------------------------------------------------------
 02x0Dh     DSP - Timer Interrupt Clear                 Read        SB16???
        ???
------------------------------------------------------------------------------
 02x0Eh     DSP - Data Available Status                 Read        SB

    DESCRIPTION
     Indicates whether or not DSP has pending data to be read through
      the DSP Read Data port (02x0Ah read).

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │[6]│[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (?)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┘
       └─────────────────────────────── Read Status (1 = Ready)

    PROCEDURE
      a) Loop until bit 7 = 1 of DSP Data Available Status (02x0Eh read)
      b) Input byte from DSP Read Data port (02x0Ah read)

    SEE ALSO
     02x0Ah  DSP - Read Data                    Read
     ·····················································
     02x0Ch  DSP - Write Buffer Status          Read
------------------------------------------------------------------------------
 02x0Eh     DSP - IRQ Acknowledge, 8-bit                Read        SB

    DESCRIPTION
     Acknowledges an IRQ signalled by an 8-bit DSP operation.

    PROCEDURE
      a) IRQ: Read from IRQ Acknowledge, 8-bit port (02x0Eh)
      b) IRQ: Perform Generic EOI (020h) to appropriate PICs

    NOTES
     ■ Reflects correct DSP Data Available Status from IRQ.

    SEE ALSO
     02x0Fh  DSP - IRQ Acknowledge, 16-bit      Read
------------------------------------------------------------------------------
 02x0Fh     DSP - IRQ Acknowledge, 16-bit               Read        SB16

    DESCRIPTION
     Acknowledges an IRQ signalled by an 16-bit DSP operation.

    PROCEDURE
      a) IRQ: Read from IRQ Acknowledge, 16-bit port (02x0Fh)
      b) IRQ: Perform Generic EOI (020h) to appropriate PICs

    NOTES
     ■ Still used for aliased 16-bit DMA (see mixer register 081h)

    SEE ALSO
     02x0Eh  DSP - IRQ Acknowledge, 8-bit       Read
------------------------------------------------------------------------------
 02x10h     CD-ROM - Data Register                      Read        SBPro

    DESCRIPTION
     Input port for active CD-ROM drive data and command response reads.

    PROCEDURE
      a) Loop until bit 2 = 0 or bit 1 = 0 of CD-ROM Status Port (02x11h read)
      b) Input byte from CD-ROM Data Register port (02x10h read)

    SEE ALSO
     02x11h  CD-ROM - Status Port               Read
     ·····················································
     02x13h  CD-ROM - Enable                    Write
     ·····················································
     02x10h  CD-ROM - Command Port              Write
------------------------------------------------------------------------------
 02x10h     CD-ROM - Command Port                       Write       SBPro

    DESCRIPTION
     Output port for active CD-ROM drive command sequences.

    PROCEDURE
     ???

    NOTES
     ■ Command packets are seven bytes long.
     ■ Interrupts should be disabled during output.

    SEE ALSO
     02x13h  CD-ROM - Enable                    Write
     ·····················································
     02x10h  CD-ROM - Data Register             Read
------------------------------------------------------------------------------
 02x11h     CD-ROM - Status Port                        Read        SBPro

    DESCRIPTION
     Indicates whether or not active CD-ROM drive is waiting for command data,
      has pending data available, or has prepared a command response.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Write Status   (0 = Busy, v1.0+)
       │   │   │   │   │   │   └─────── Data Available (0 = Ready)
       │   │   │   │   │   └─────────── Read Status    (0 = Ready)
       │   │   │   │   └─────────────┬─ Reserved (1)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    SEE ALSO
     02x10h  CD-ROM - Data Register             Read
     02x10h  CD-ROM - Command Port              Write
     ·····················································
     02x13h  CD-ROM - Enable                    Write
------------------------------------------------------------------------------
 02x12h     CD-ROM - Reset                              Write       SBPro

    DESCRIPTION
     Performs complete reset of active CD-ROM drive.

    PROCEDURE
      a) Write 001h
      b) Wait 82µs??? minimum
      c) Write 000h

    NOTES
     ■ Reset will close open drive doors.

    SEE ALSO
     02x13h  CD-ROM - Enable                    Write
------------------------------------------------------------------------------
 02x13h     CD-ROM - Enable                             Write       SBPro

    DESCRIPTION
     Selects active CD-ROM drive on multiple drive systems.

    PROCEDURE
     ???

    SEE ALSO
     02x10h  CD-ROM - Data Register             Read
     02x10h  CD-ROM - Command Port              Write
     02x11h  CD-ROM - Status Port               Read
     02x12h  CD-ROM - Reset                     Write
------------------------------------------------------------------------------
 0388h      AdLib - Status Port                         Read        SB

    DESCRIPTION
     Categorizes left-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (1)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┘
       │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
       │   └─────────────────────────── Timer 1 Status      (1 = Expired)
       └─────────────────────────────── Global Timer Status (1 = Active )

    NOTES
     ■ Global Timer Status will be active if either timer has expired.
     ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
     ■ Synthesizer generated timer interrupts are signalled on IRQ0.
     ■ Alias for FM Music - Left Status Port (02x00h).

    SEE ALSO
     0388h   AdLib - Register Port              Write
     0389h   AdLib - Data Register              Write
     ·····················································
     02x00h  FM Music - Left Status Port        Read
------------------------------------------------------------------------------
 0388h      AdLib - Register Port                       Write       SB

    DESCRIPTION
     Selects register index into left-channel synthesizer data port (0389h)

    PROCEDURE
      a) Write register index (0388h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (0389h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     ■ Alias for FM Music - Left Register Port (02x00h).

    SEE ALSO
     0388h   AdLib - Status Port                Read
     0389h   AdLib - Data Register              Write
     ·····················································
     02x00h  FM Music - Left Register Port      Write
------------------------------------------------------------------------------
 0389h      AdLib - Data Register                       Write       SB

    DESCRIPTION
     References currently selected left-channel synthesizer index register.

    PROCEDURE
      a) Write register index (0388h)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (0389h)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     ■ Alias for FM Music - Left Data Register (02x01h).

    SEE ALSO
     0388h   AdLib - Status Port                Read
     0388h   AdLib - Register Port              Write
     ·····················································
     02x01h  FM Music - Left Data Register      Write
------------------------------------------------------------------------------
 038Ah      Advanced AdLib - Status Port                Read        SB16

    DESCRIPTION
     Categorizes right-channel synthesizer generated timer interrupts.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (1)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┘
       │   │   └─────────────────────── Timer 2 Status      (1 = Expired)
       │   └─────────────────────────── Timer 1 Status      (1 = Expired)
       └─────────────────────────────── Global Timer Status (1 = Active )

    NOTES
     ■ Global Timer Status will be active if either timer has expired.
     ■ Counter period of Timer 1 is 80µs, and Timer 2 is 230µs.
     ■ Synthesizer generated timer interrupts are signalled on IRQ0.
     ■ Alias for FM Music - Right Status Port (02x02h) on SB16 or higher.

    SEE ALSO
     038Ah   A. AdLib - Register Port           Write
     038Bh   A. AdLib - Data Register           Write
     ·····················································
     02x02h  FM Music - Right Status Port       Read
------------------------------------------------------------------------------
 038Ah      Advanced AdLib - Register Port              Write       SB16

    DESCRIPTION
     Selects register index into right-channel synthesizer data port (038Bh)

    PROCEDURE
      a) Write register index (038Ah)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (038Bh)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     ■ Alias for FM Music - Right Register Port (02x02h) on SB16 or higher.

    SEE ALSO
     038Ah   A. AdLib - Status Port             Read
     038Bh   A. AdLib - Data Register           Write
     ·····················································
     02x02h  FM Music - Right Register Port     Write
------------------------------------------------------------------------------
 038Bh      A. AdLib - Data Register                    Write       SB16

    DESCRIPTION
     References currently selected right-channel synthesizer index register.

    PROCEDURE
      a) Write register index (038Ah)
      b) Wait 3.3µs (0.0?µs OPL3)
      c) Write register data  (038Bh)
      d) Wait 23µs  (0.28µs OPL3)

    NOTES
     ■ Original SoundBlaster Pros were equipped with dual OPL2 synthesizers,
        connecting this channel to the left speaker exclusively; whereas later
        models began using OPL3-compatible synthesizers, which send all output
        to both the left and right speakers unless programmed to do otherwise.
     ■ Alias for FM Music - Right Data Register (02x03h) on SB16 or higher.

    SEE ALSO
     038Ah   A. AdLib - Status Port             Read
     038Ah   A. AdLib - Register Port           Write
     ·····················································
     02x03h  FM Music - Right Data Register     Write
------------------------------------------------------------------------------
 03x00h     MPU-401 - Data Port                         Read/Write  SB16???

    DESCRIPTION
     Port for MPU-401 data transfer.

    PROCEDURE (R)
      a) Loop until bit 6 = 0 of MPU-401 Status Port (03x01h read)
      b) Input byte from MPU-401 Data Register port (03x00h read/write)

    PROCEDURE (W)
      a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
      b) Output byte to MPU-401 Data Register port (03x00h read/write)

    SEE ALSO
     03x01h  MPU-401 - Status Port              Read
     ·····················································
     03x01h  MPU-401 - Command Port             Write
------------------------------------------------------------------------------
 03x01h     MPU-401 - Status Port                       Read        SB16???

    DESCRIPTION
     Indicates whether or not MPU-401 has data pending or is awaiting data.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (?)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┘
       │   └─────────────────────────── Data Read Register (0 = Ready)
       └─────────────────────────────── Data Set Ready     (0 = Ready)

    SEE ALSO
     03x00h  MPU-401 - Data Port                Read/Write
     ·····················································
     03x01h  MPU-401 - Command Port             Write
------------------------------------------------------------------------------
 03x01h     MPU-401 - Command Port                      Write       SB16???

    DESCRIPTION
     Output port for MPU-401 command sequences.

    PROCEDURE (W)
      a) Loop until bit 7 = 0 of MPU-401 Status Port (03x01h read)
      b) Output byte to MPU-401 Command Port (03x01h write)

    SEE ALSO
     03x01h  MPU-401 - Status Port              Read
     ·····················································
     03x00h  MPU-401 - Data Port                Read/Write
------------------------------------------------------------------------------
 0201h      Joystick Status Port                        Read/Write  SB

    DESCRIPTION
     Status port for joystick button and position read.

    JOYSTICK BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Joystick A: Switch X (1 = Reached)
       │   │   │   │   │   │   └─────── Joystick A: Switch Y (1 = Reached)
       │   │   │   │   │   └─────────── Joystick B: Switch X (1 = Reached)
       │   │   │   │   └─────────────── Joystick B: Switch Y (1 = Reached)
       │   │   │   └─────────────────── Joystick A: Button 1 (0 = Active )
       │   │   └─────────────────────── Joystick A: Button 2 (0 = Active )
       │   └─────────────────────────── Joystick B: Button 1 (0 = Active )
       └─────────────────────────────── Joystick B: Button 2 (0 = Active )

    PROCEDURE
      a) Output byte to Joystick Status Port (0201h read/write) to reset timer
      b) Loop until all directional bits charge in Joystick Status Port (0201h
          read/write), use elapsed time waiting on each bit proportionally


==============================================================================
 DSP COMMANDS
------------------------------------------------------------------------------
 003h           ASP Status                                          SB16ASP
 004h           DSP Status (Obsolete)                               SB2.0-Pro2
 004h           ASP ???                                             SB16ASP
 005h           ASP ???                                             SB16ASP
 010h           Direct DAC, 8-bit                                   SB
 014h           DMA DAC, 8-bit                                      SB
 016h           DMA DAC, 2-bit ADPCM                                SB
 017h           DMA DAC, 2-bit ADPCM Reference                      SB
 01Ch           Auto-Initialize DMA DAC, 8-bit                      SB2.0
 01Fh           Auto-Initialize DMA DAC, 2-bit ADPCM Reference      SB2.0
 020h           Direct ADC, 8-bit                                   SB
 024h           DMA ADC, 8-bit                                      SB
 028h           Direct ADC, 8-bit (Burst)                           SB-Pro2
 02Ch           Auto-Initialize DMA ADC, 8-bit                      SB2.0
 030h           MIDI Read Poll                                      SB
 031h           MIDI Read Interrupt                                 SB
 032h           MIDI Read Timestamp Poll                            SB???
 033h           MIDI Read Timestamp Interrupt                       SB???
 034h           MIDI Read Poll + Write Poll (UART)                  SB2.0
 035h           MIDI Read Interrupt + Write Poll (UART)             SB2.0???
 037h           MIDI Read Timestamp Interrupt + Write Poll (UART)   SB2.0???
 038h           MIDI Write Poll                                     SB
 040h           Set Time Constant                                   SB
 041h           Set Sample Rate                                     SB16
 045h           Continue Auto-Initialize DMA, 8-bit                 SB16
 047h           Continue Auto-Initialize DMA, 16-bit                SB16
 048h           Set DMA Block Size                                  SB2.0
 074h           DMA DAC, 4-bit ADPCM                                SB
 075h           DMA DAC, 4-bit ADPCM Reference                      SB
 076h           DMA DAC, 2.6-bit ADPCM                              SB
 077h           DMA DAC, 2.6-bit ADPCM Reference                    SB
 07Dh           Auto-Initialize DMA DAC, 4-bit ADPCM Reference      SB2.0
 07Fh           Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    SB2.0
 080h           Silence DAC                                         SB
 090h           Auto-Initialize DMA DAC, 8-bit (High Speed)         SB2.0-Pro2
 098h           Auto-Initialize DMA ADC, 8-bit (High Speed)         SB2.0-Pro2
 0A0h           Disable Stereo Input Mode                           SBPro Only
 0A8h           Enable Stereo Input Mode                            SBPro Only
 0Bxh/0Cxh      Generic DAC/ADC DMA (16-bit, 8-bit)                 SB16
 0D0h           Halt DMA Operation, 8-bit                           SB
 0D1h           Enable Speaker                                      SB
 0D3h           Disable Speaker                                     SB
 0D4h           Continue DMA Operation, 8-bit                       SB
 0D5h           Halt DMA Operation, 16-bit                          SB16
 0D6h           Continue DMA Operation, 16-bit                      SB16
 0D8h           Speaker Status                                      SB
 0D9h           Exit Auto-Initialize DMA Operation, 16-bit          SB16
 0DAh           Exit Auto-Initialize DMA Operation, 8-bit           SB2.0
 0E0h           DSP Identification                                  SB2.0
 0E1h           DSP Version                                         SB
 0E3h           DSP Copyright                                       SBPro2???
 0E4h           Write Test Register                                 SB2.0
 0E8h           Read Test Register                                  SB2.0
 0F0h           Sine Generator                                      SB
 0F1h           DSP Auxiliary Status (Obsolete)                     SB-Pro2
 0F2h           IRQ Request, 8-bit                                  SB
 0F3h           IRQ Request, 16-bit                                 SB16
 0FBh           DSP Status                                          SB16
 0FCh           DSP Auxiliary Status                                SB16
 0FDh           DSP Command Status                                  SB16

------------------------------------------------------------------------------
 003h       ASP Status                                              SB16ASP
    COMMAND <-STATUS

    ???
------------------------------------------------------------------------------
 004h       DSP Status (Obsolete)                                   SB2.0-Pro2
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves information about pending DSP operations.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Speaker Status           (1 = Active)
       │   │   │   │   │   │   └─────── Stereo ADC Status        (1 = Active)
       │   │   │   │   │   └─────────── Reserved (0)
       │   │   │   │   └─────────────── Direct ADC   8-bit Burst (1 = Active)
       │   │   │   └─────────────────── DMA    DAC   2-bit ADPCM (1 = Active)
       │   │   └─────────────────────── DMA    DAC 2.6-bit ADPCM (1 = Active)
       │   └─────────────────────────── DMA    DAC   4-bit ADPCM (1 = Active)
       └─────────────────────────────── DMA    DAC   8-bit       (1 = Active)

    NOTES
     ■ SoundBlaster 2.0 implements only bit 3 and 7.
     ■ SoundBlaster Pro models do not support bit 7.

    SEE ALSO
     0F1h   DSP Auxiliary Status (Obsolete)
     ·····················································
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
     ·····················································
     0D8h   Speaker Status
------------------------------------------------------------------------------
 004h       ASP ???                                                 SB16ASP
    COMMAND->???

    ???
------------------------------------------------------------------------------
 005h       ASP ???                                                 SB16ASP
    COMMAND->DATAHIBYTE->DATALOBYTE

    ???
------------------------------------------------------------------------------
 010h       Direct DAC, 8-bit                                       SB
    COMMAND->SAMPLEBYTE

    DESCRIPTION
     Outputs single sample.

    PROCEDURE
      a) Send Direct DAC, 8-bit command (010h) and sample
      b) Wait for correct timing

    NOTES
     ■ Direct mode maximum sample rate is 23KHz.

    SEE ALSO
     020h   Direct ADC, 8-bit
------------------------------------------------------------------------------
 014h       DMA DAC, 8-bit                                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 8-bit DMA transfer.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 8-bit command (014h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = SAMPLES - 1

    NOTES
     ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     01Ch   Auto-Initialize DMA DAC, 8-bit                     
     090h   Auto-Initialize DMA DAC, 8-bit (High Speed)        
     0Cxh   Generic DAC/ADC DMA, 8-bit
     ·····················································
     017h   DMA DAC, 2-bit ADPCM Reference
     075h   DMA DAC, 4-bit ADPCM Reference
     077h   DMA DAC, 2.6-bit ADPCM Reference         
     ·····················································
     024h   DMA ADC, 8-bit                                          
------------------------------------------------------------------------------
 016h       DMA DAC, 2-bit ADPCM                                    SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2-bit ADPCM DMA transfer with accumulated reference byte.
    This operation uses 8-bit DMA mode.

    PROCEDURE (after command 017h)
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2-bit ADPCM command (016h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = (SAMPLES-1 + 3)/4

    NOTES
     ■ Supports up to 11KHz on SoundBlaster 1.x  
     ■ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     017h   DMA DAC, 2-bit ADPCM Reference
     ·····················································
     074h   DMA DAC, 4-bit ADPCM
     076h   DMA DAC, 2.6-bit ADPCM
------------------------------------------------------------------------------
 017h       DMA DAC, 2-bit ADPCM Reference                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2-bit ADPCM DMA transfer with new reference byte.  This
    operation uses 8-bit DMA mode.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2-bit ADPCM Reference command (017h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = (SAMPLES-1 + 3)/4 + 1

    NOTES
     ■ Supports up to 11KHz on SoundBlaster 1.x
     ■ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     016h   DMA DAC, 2-bit ADPCM
     ·····················································
     075h   DMA DAC, 4-bit ADPCM Reference
     077h   DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
 01Ch       Auto-Initialize DMA DAC, 8-bit                          SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 8-bit DMA transfer.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 8-bit command (01Ch)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     ■ Supports up to 23KHz (11.5KHz stereo???)
     ■ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.     

    LENGTH = (SAMPLES + 1)/2 - 1

    SEE ALSO
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     090h   Auto-Initialize DMA DAC, 8-bit (High Speed) 
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 01Fh       Auto-Initialize DMA DAC, 2-bit ADPCM Reference          SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 2-bit ADPCM DMA transfer with reference byte.     

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 2-bit ADPCM command (01Fh)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     ■ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     ■ Ensoniq Soundscape does not support ADPCM.     

    SAMPLEBYTES = (SAMPLES     + 3)/4 + 1
    LENGTH      = (SAMPLEBYTES + 1)/2 - 1

    SEE ALSO 
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     017h   DMA DAC, 2-bit ADPCM Reference                     
     ·····················································
     07Dh   Auto-Initialize DMA DAC, 4-bit ADPCM Reference      
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    
------------------------------------------------------------------------------
 020h       Direct ADC, 8-bit                                       SB
    COMMAND <-SAMPLEBYTE

    DESCRIPTION
     Inputs single sample.
                                
    PROCEDURE
      a) Send Direct ADC, 8-bit command (020h)
      b) Read sample
      c) Wait for correct timing    

    NOTES
     ■ Direct mode maximum sample rate is 23KHz.

    SEE ALSO
     010h   Direct DAC, 8-bit                           
------------------------------------------------------------------------------
 024h       DMA ADC, 8-bit                                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 8-bit DMA transfer (record).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 044h + channel)
      e) Perform DMA ADC, 8-bit command (024h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH = SAMPLES - 1

    NOTES
     ■ SoundBlasters prior to SB16 return the first sample in direct mode.

    SEE ALSO                 
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     02Ch   Auto-Initialize DMA ADC, 8-bit                    
     098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
     0Cxh   Generic DAC/ADC DMA, 8-bit                  
------------------------------------------------------------------------------
 028h       Direct ADC, 8-bit (Burst)                               SB-Pro2
    COMMAND <-SAMPLEBYTE0...SAMPLEBYTEn

    DESCRIPTION
     ???

    PROCEDURE
     ???

    NOTES
     ■ Terminate operation with DSP reset.

    SEE ALSO
     020h   Direct ADC, 8-bit
------------------------------------------------------------------------------
 02Ch           Auto-Initialize DMA ADC, 8-bit                      SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 8-bit DMA transfer (record).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 054h + channel)
      f) Perform Auto-Initialize DMA ADC, 8-bit command (02Ch)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     ■ Supports up to 23KHz (11.5KHz stereo???)
     ■ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.     

    LENGTH = (SAMPLES + 1)/2 - 1

    SEE ALSO
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 030h       MIDI Read Poll                                          SB
    COMMAND <-MIDICODE

    DESCRIPTION
     Reads MIDI code.

    PROCEDURE
      a) Send MIDI Read Poll command (030h)
      b) Read MIDI code when available

    NOTES
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     031h   MIDI Read Interrupt
     ·····················································
     032h   MIDI Read Timestamp Poll
     033h   MIDI Read Timestamp Interrupt
     ·····················································
     034h   MIDI Read Poll + Write Poll (UART)
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     ·····················································
     038h   MIDI Write Poll
------------------------------------------------------------------------------
 031h       MIDI Read Interrupt                                     SB
    COMMAND {<-MIDICODE}

    DESCRIPTION
     Generates interrupt when MIDI code is available.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform MIDI Read Interrupt command (031h)
      c) IRQ: Read MIDI code
      d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      e) Perform MIDI Read Interrupt command (031h) to terminate

    NOTES
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     033h   MIDI Read Timestamp Interrupt
     ·····················································
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     ·····················································
     030h   MIDI Read Poll
-----------------------------------------------------------------------------
 032h       MIDI Read Timestamp Poll                                SB???
    COMMAND <-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE

    DESCRIPTION
     Reads MIDI code with timestamp.

    PROCEDURE
      a) Send MIDI Read Timestamp Poll command (032h)
      b) Read timestamp and MIDI code when available

    NOTES
     ■ Timestamp if 24-bit value containing the time since the last MIDI
        command in milliseconds.
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     033h   MIDI Read Timestamp Interrupt
     ·····················································
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
 033h       MIDI Read Timestamp Interrupt                           SB???
    COMMAND {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}

    DESCRIPTION
     Generates interrupt when MIDI code is available, includes timestamp.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform MIDI Read Interrupt with Timestamp command (033h)
      c) IRQ: Read MIDI code with timestamp
      d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      e) Perform MIDI Read Interrupt with Timestamp command (033h) to terminate

    NOTES
     ■ Timestamp if 24-bit value containing the time since the last MIDI
        command in milliseconds.
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     032h   MIDI Read Timestamp Poll
     ·····················································
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
 034h       MIDI Read Poll + Write Poll (UART)                      SB2.0
    COMMAND [->MIDICODE] [<-MIDICODE]

    DESCRIPTION
     Enables UART mode, where all DSP read/writes are interpreted as MIDI codes.

    PROCEDURE
      a) Send MIDI Read Poll + Write Poll (UART) command (034h)
      b) Send and receive MIDI codes
      c) Reset DSP to terminate

    NOTES
     ■ Disable UART mode with DSP reset (port 02x06h)
     ■ Read/write status must still be checked (port 02x0Eh/02x0Ch)
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     030h   MIDI Read Poll
     038h   MIDI Write Poll
     ·····················································
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
------------------------------------------------------------------------------
 035h       MIDI Read Interrupt + Write Poll (UART)                 SB2.0???
    COMMAND [->MIDICODE] {<-MIDICODE}

    DESCRIPTION
     Enables UART mode with interrupt, where all DSP writes are interpreted as
      MIDI codes and interrupts are generated when a MIDI code is to be read.

    PROCEDURE
      a) Send MIDI Read Interrupt + Write Poll (UART) command (035h)
      b) Send and receive MIDI codes (see command 031h)
      c) Reset DSP to terminate

    NOTES
     ■ Disable UART mode with DSP reset (port 02x06h)
     ■ Write buffer status must still be checked (port 02x0Ch)
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     034h   MIDI Read Poll + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     ·····················································
     031h   MIDI Read Interrupt
------------------------------------------------------------------------------
 037h       MIDI Read Timestamp Interrupt + Write Poll (UART)       SB2.0???
    COMMAND [->MIDICODE]
             {<-TIMESTAMPLOBYTE<-TIMESTAMPMIDBYTE<-TIMESTAMPHIBYTE<-MIDICODE}

    DESCRIPTION
     Enables UART mode with interrupt, where all DSP writes are interpreted as
      MIDI codes and interrupts are generated when a timestamped MIDI code is
      to be read.

    PROCEDURE
      a) Send MIDI Read Timestamp Interrupt + Write Poll (UART) command (037h)
      b) Send and receive MIDI codes with timestamps (see command 033h)
      c) Reset DSP to terminate

    NOTES
     ■ Disable UART mode with DSP reset (port 02x06h)
     ■ Write buffer status must still be checked (port 02x0Ch)
     ■ SoundBlasters buffer up to 64bytes of MIDI data.

    SEE ALSO
     034h   MIDI Read Poll + Write Poll (UART)
     035h   MIDI Read Interrupt + Write Poll (UART)
     ·····················································
     038h   MIDI Write Poll
------------------------------------------------------------------------------
 038h       MIDI Write Poll                                         SB
    COMMAND->MIDICODE

    DESCRIPTION
     Writes MIDI code.

    PROCEDURE
      a) Send MIDI Write Poll command (038h) and data

    SEE ALSO
     034h   MIDI Read Poll + Write Poll (UART)
     035h   MIDI Read Interrupt + Write Poll (UART)
     037h   MIDI Read Timestamp Interrupt + Write Poll (UART)
     ·····················································
     030h   MIDI Read Poll
------------------------------------------------------------------------------
 040h       Set Time Constant                                       SB
    COMMAND->TIMEBYTE

    DESCRIPTION
     Sets sample rate through internal I/O transfer timer.

    FORMULA
     TimeConstant = 256 - (1000000 / (SampleChannels * SampleRate))

    NOTES
     ■ For non-SoundBlaster Pro cards, always set SampleChannels equal to one.

    SEE ALSO
     041h   Set Sample Rate
------------------------------------------------------------------------------
 041h       Set Sample Rate                                         SB16
    COMMAND->RATEHIBYTE->RATELOBYTE

    DESCRIPTION
     Sets sample rate.

    NOTES
     ■ Sampling rate precision is truncated to nearest time constant.
     ■ Sampling rate is programmed independent of stereo or monaural modes.

    SEE ALSO
     040h   Set Time Constant
------------------------------------------------------------------------------
 045h       Continue Auto-Initialize DMA, 8-bit                     SB16
    COMMAND

    DESCRIPTION
     Continues a halted auto-initialized 8-bit DMA operation.

    SEE ALSO
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit
     ·····················································
     0Cxh   Generic DAC/ADC, 8-bit
     ·····················································
     01Ch   Auto-Initialize DMA DAC,   8-bit
     01Fh   Auto-Initialize DMA DAC,   2-bit ADPCM
     02Ch   Auto-Initialize DMA ADC,   8-bit
     07Dh   Auto-Initialize DMA DAC,   4-bit ADPCM
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM
     090h   Auto-Initialize DMA DAC,   8-bit (High Speed)
     098h   Auto-Initialize DMA ADC,   8-bit (High Speed)
------------------------------------------------------------------------------
 047h       Continue Auto-Initialize DMA, 16-bit                    SB16
    COMMAND

    DESCRIPTION
     Continues a halted auto-initialized 16-bit DMA operation.

    SEE ALSO
     0D9h   Exit Auto-Initialize DMA, 16-bit
     ·····················································
     0Bxh   Generic DAC/ADC, 16-bit
------------------------------------------------------------------------------
 048h       Set DMA Block Size                                      SB2.0
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Set DMA transfer size for auto-initialize and high speed modes.

    SAMPLEBYTES =  SAMPLES                    8-bit
                  (SAMPLES-1   + 1)/2 + 1     4-bit ADPCM + Reference
                  (SAMPLES-1   + 2)/3 + 1   2.6-bit ADPCM + Reference
                  (SAMPLES-1   + 3)/4 + 1     2-bit ADPCM + Reference

    LENGTH      =  SAMPLEBYTES        - 1  (Single Cycle)
                  (SAMPLEBYTES + 1)/2 - 1  (Auto-Init   )

    NOTES
     ■ Length is always equal to the number of bytes to transfer minus one.

    SEE ALSO
     01Ch   Auto-Initialize DMA DAC,   8-bit
     01Fh   Auto-Initialize DMA DAC,   2-bit ADPCM
     02Ch   Auto-Initialize DMA ADC,   8-bit
     07Dh   Auto-Initialize DMA DAC,   4-bit ADPCM
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM
     090h   Auto-Initialize DMA DAC,   8-bit (High Speed)
     098h   Auto-Initialize DMA ADC,   8-bit (High Speed)
------------------------------------------------------------------------------
 074h       DMA DAC, 4-bit ADPCM                                    SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 4-bit ADPCM DMA transfer with accumulated reference byte.
    This operation uses 8-bit DMA mode.

    PROCEDURE (after command 075h)
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 4-bit ADPCM command (074h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 1)/2

    NOTES
     ■ Supports up to 12KHz on SoundBlaster 1.x  
     ■ Ensoniq Soundscape does not support ADPCM.
                                                          
    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     074h   DMA DAC, 4-bit ADPCM Reference
     ·····················································
     016h   DMA DAC, 2-bit ADPCM
     076h   DMA DAC, 2.6-bit ADPCM
------------------------------------------------------------------------------
 075h       DMA DAC, 4-bit ADPCM Reference                          SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 4-bit ADPCM DMA transfer with new reference byte.  This
    operation uses 8-bit DMA mode.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 4-bit ADPCM Reference command (075h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 1)/2 + 1

    NOTES
     ■ Supports up to 12KHz on SoundBlaster 1.x  
     ■ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     075h   DMA DAC, 4-bit ADPCM
     ·····················································
     017h   DMA DAC, 2-bit ADPCM Reference
     077h   DMA DAC, 2.6-bit ADPCM Reference
------------------------------------------------------------------------------
 076h       DMA DAC, 2.6-bit ADPCM                                  SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2.6-bit ADPCM DMA transfer with accumulated reference byte.
    This operation uses 8-bit DMA mode.

    PROCEDURE (after command 077h)
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2.6-bit ADPCM command (076h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 2)/3

    NOTES
     ■ Supports up to 13KHz on SoundBlaster 1.x  
     ■ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     077h   DMA DAC, 2.6-bit ADPCM Reference
     ·····················································
     016h   DMA DAC, 2-bit ADPCM
     074h   DMA DAC, 4-bit ADPCM
------------------------------------------------------------------------------
 077h       DMA DAC, 2.6-bit ADPCM Reference                        SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Initiates 2.6-bit ADPCM DMA transfer with new reference byte.  This
    operation uses 8-bit DMA mode.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Enable Speaker command (0D1h)
      d) Setup DMA controller (mode = 048h + channel)
      e) Perform DMA DAC, 2.6-bit ADPCM Reference command (077h)
      f) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      g) Perform Disable Speaker command (0D3h)

    LENGTH      = (SAMPLES-1   + 2)/3 + 1

    NOTES
     ■ Supports up to 13KHz on SoundBlaster 1.x  
     ■ Ensoniq Soundscape does not support ADPCM.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     ·····················································
     076h   DMA DAC, 2.6-bit ADPCM
     ·····················································
     017h   DMA DAC, 2-bit ADPCM Reference
     075h   DMA DAC, 4-bit ADPCM Reference
------------------------------------------------------------------------------
 07Dh       Auto-Initialize DMA DAC, 4-bit ADPCM Reference          SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 4-bit ADPCM DMA transfer with reference byte.         

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 4-bit ADPCM command (07Dh)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     ■ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     ■ Ensoniq Soundscape does not support ADPCM.

    SAMPLEBYTES = (SAMPLES     + 1)/2 + 1
    LENGTH      = (SAMPLEBYTES + 1)/2 - 1

    SEE ALSO     
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     075h   DMA DAC, 4-bit ADPCM Reference                   
     ·····················································
     01Fh   Auto-Initialize DMA DAC, 2-bit ADPCM Reference      
     07Fh   Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference    
------------------------------------------------------------------------------
 07Fh       Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference        SB2.0
    COMMAND

    DESCRIPTION
     Initiates auto-initialize 2.6-bit ADPCM DMA transfer with reference byte.          

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 2.6-bit ADPCM command (07Fh)
      g) IRQ: Prepare next half of buffer (not always in handler)
      h) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      i) Loop to G until complete
      j) Perform Disable Speaker command (0D3h)
      k) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)
      l) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      m) Perform Halt DMA Operation, 8-bit command (0D0h - for virtual speaker)

    NOTES
     ■ Exit auto-initialized mode by programming single-cycle DMA output or
        with Exit Auto-Initialize DMA Operation, 8-bit (0DAh).
     ■ Ensoniq Soundscape does not support ADPCM.    

    SAMPLEBYTES = (SAMPLES     + 2)/3 + 1
    LENGTH      = (SAMPLEBYTES + 1)/2 - 1

    SEE ALSO
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     077h   DMA DAC, 2.6-bit ADPCM Reference            
     ·····················································
     01Fh   Auto-Initialize DMA DAC, 2-bit ADPCM Reference      
     07Dh   Auto-Initialize DMA DAC, 4-bit ADPCM Reference      
------------------------------------------------------------------------------
 080h       Silence DAC                                             SB
    COMMAND->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Outputs block of silent samples at current sample rate, and signals
      IRQ when complete.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Silence DAC command (080h)
      d) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      e) Remove IRQ handler (restore vector, restore PIC mask)

    LENGTH = SAMPLES - 1

    SEE ALSO
     040h   Set Time Constant
------------------------------------------------------------------------------
 090h       Auto-Initialize DMA DAC, 8-bit (High Speed)             SB2.0-Pro2
    COMMAND

    DESCRIPTION
     Initiates 8-bit DMA transfer (>23KHz).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 058h + channel)
      f) Perform Auto-Initialize DMA DAC, 8-bit (HighSpeed) command (090h)
      g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      h) Reset DSP (or terminate normally on SB16+)

    NOTES
     ■ High speed mode ignores DSP commands during transfers (<SB16).
     ■ Use command 0Cxh to avoid SoundBlaster 16 quantization errors.

    SEE ALSO
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     01Ch   Auto-Initialize DMA DAC, 8-bit
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 098h       Auto-Initialize DMA ADC, 8-bit (High Speed)             SB2.0-Pro2
    COMMAND

    DESCRIPTION
     Initiates 8-bit DMA transfer (record, >23KHz).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Perform Set DMA Block Size command (048h)
      d) Perform Enable Speaker command (0D1h)
      e) Setup DMA controller (mode = 054h + channel)
      f) Perform Auto-Initialize DMA ADC, 8-bit (HighSpeed) command (098h)
      g) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)
      h) Reset DSP (or terminate normally on SB16+)

    NOTES
     ■ High speed mode ignores DSP commands during transfers (<SB16).

    SEE ALSO
     048h   Set DMA Block Size                       
     ·····················································
     0D0h   Halt DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     02Ch   Auto-Initialize DMA ADC, 8-bit
     0Cxh   Generic DAC/ADC DMA, 8-bit               
------------------------------------------------------------------------------
 0A0h       Disable Stereo Input Mode                               SBPro Only
    COMMAND

    DESCRIPTION
     Selects monaural input mode on SoundBlaster Pro.

    NOTES
     ■ Monaural input mode is default.
     ■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.

    SEE ALSO
     0A8h   Enable Stereo Input Mode
     ·····················································
     0F1h   DSP Auxiliary Status (Obsolete)
------------------------------------------------------------------------------
 0A8h       Enable Stereo Input Mode                                SBPro Only
    COMMAND

    DESCRIPTION
     Selects stereo input mode on SoundBlaster Pro.

    NOTES
     ■ Monaural input mode is default.
     ■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo input.
     ■ BUG: Stereo input mode results in playback static.

    SEE ALSO
     0A0h   Disable Stereo Input Mode
     ·····················································
     0F1h   DSP Auxiliary Status (Obsolete)
------------------------------------------------------------------------------
 0Bxh/0Cxh  Generic DAC/ADC DMA (16-bit, 8-bit)                     SB16
    COMMAND->MODE->LENGTHLOBYTE->LENGTHHIBYTE

    DESCRIPTION
     Generalized sampling and playback command (includes 16-bit operations).

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform Set Time Constant command (040h), or otherwise set sample rate
      c) Setup DMA controller (mode = mode + channel)
      d) Perform Generic DAC/ADC DMA command (0Bxh/0Cxh)
      e) IRQ: Acknowledge IRQ (input from IRQ Acknowledge port - 02x0Eh/02x0Fh;
                               perform Generic EOI (020h) to appropriate PICs)
      f) Terminate transfer, method dependent on mode

    COMMAND BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║(7)│(6)│(5)│(4)│ 3 │ 2 │ 1 │[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Reserved (0)
       │   │   │   │   │   │   └─────── FIFO Mode (0 = Disable, 1 = Enable)
       │   │   │   │   │   └─────────── DMA Mode  (0 = Single, 1 = Auto-Init)
       │   │   │   │   └─────────────── Transfer Mode (0 = DAC, 1 = ADC)
       │   │   │   └─────────────────┐
       │   │   └─────────────────────┼─ Sampling Resolution
       │   └─────────────────────────┤   1011b = 16-bit, 1100b = 8-bit
       └─────────────────────────────┘

    MODE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│ 5 │ 4 │[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Sample Mode (0 = Unsigned, 1 = Signed)
       │   │   └─────────────────────── Stereo Mode (0 = Monaural, 1 = Stereo)
       │   └─────────────────────────┬─ Reserved (0)
       └─────────────────────────────┘

    LENGTH = SAMPLES - 1        (even for 16-bit samples)

    NOTES
     ■ Enable FIFO mode for high speed mode or large data transfers.
     ■ BUG: SoundBlaster 16 ADC only accurate to 12-bits.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit
     0D4h   Continue DMA Operation, 8-bit
     045h   Continue Auto-Initialize DMA Operation, 8-bit
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit       
     ·····················································
     0D5h   Halt DMA Operation, 16-bit
     0D6h   Continue DMA Operation, 16-bit
     047h   Continue Auto-Initialize DMA, 16-bit
     0D9h   Exit Auto-Initialize DMA Operation, 16-bit
     ·····················································
     014h   DMA DAC, 8-bit
     024h   DMA ADC, 8-bit
     ·····················································
     01Ch   Auto-Initialize DMA DAC, 8-bit
     02Ch   Auto-Initialize DMA ADC, 8-bit
     ·····················································
     090h   Auto-Initialize DMA DAC, 8-bit (High Speed)
     098h   Auto-Initialize DMA ADC, 8-bit (High Speed)
------------------------------------------------------------------------------
 0D0h       Halt DMA Operation, 8-bit                               SB
    COMMAND

    DESCRIPTION
     Pauses 8-bit single-cycle DMA operation.

    NOTES
     ■ Halts every 8-bit DMA mode on SoundBlaster 16.              
     ■ BUG: Halts 16-bit DMA operation on early SoundBlaster 16s (4.04).     

    SEE ALSO
     0D4h   Continue DMA Operation, 8-bit             
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit 
------------------------------------------------------------------------------
 0D1h       Enable Speaker                                          SB
    COMMAND

    DESCRIPTION
     Enables speaker output.

    NOTES
     ■ Reset of DSP disables speaker.
     ■ BUG: Halts pending DMA operations on SoundBlaster 1.x.
     ■ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
     ■ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
     ■ BUG: Speaker state does NOT physically change on SoundBlaster 16.
     ■ Originator of noisy 'pops' on some models (capacitor discharge).            

    SEE ALSO
     0D3h   Disable Speaker
------------------------------------------------------------------------------
 0D3h       Disable Speaker                                         SB
    COMMAND

    DESCRIPTION
     Disables speaker output.  

    NOTES    
     ■ Reset of DSP disables speaker.
     ■ BUG: Halts pending DMA operations on SoundBlaster 1.x.
     ■ BUG: Enabled speaker generates sampling noise on SoundBlaster 2.0.
     ■ BUG: Speaker MUST be disabled before sampling on SoundBlaster Pro.
     ■ BUG: Speaker state does NOT physically change on SoundBlaster 16.
     ■ Originator of noisy 'pops' on some models (capacitor discharge).            

    SEE ALSO
     0D1h   Enable Speaker
------------------------------------------------------------------------------
 0D4h       Continue DMA Operation, 8-bit                           SB
    COMMAND

    DESCRIPTION
     Continues a halted 8-bit single-cycle DMA operation.

    NOTES
     ■ Continues every 8-bit DMA mode on SoundBlaster 16.           
     ■ BUG: Continues 16-bit DMA operation on early SoundBlaster 16 (4.04).     

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit                 
     0DAh   Exit Auto-Initialize DMA Operation, 8-bit 
------------------------------------------------------------------------------
 0D5h       Halt DMA Operation, 16-bit                              SB16
    COMMAND

    DESCRIPTION
     Pauses any 16-bit DMA operation.                        

    SEE ALSO
     0D6h   Continue DMA Operation, 16-bit                              
     0D9h   Exit Auto-Initialize DMA Operation, 16-bit              
------------------------------------------------------------------------------
 0D6h       Continue DMA Operation, 16-bit                          SB16
    COMMAND

    DESCRIPTION
     Continues any halted 16-bit DMA operation.

    SEE ALSO
     0D5h   Halt DMA Operation, 16-bit
     0D9h   Exit Auto-Initialize DMA Operation, 16-bit              
------------------------------------------------------------------------------
 0D8h       Speaker Status                                          SB
    COMMAND <-STATUS

    DESCRIPTION
     Determines current status of speaker.

    STATUS BYTE
     000h = Disabled
     0FFh = Enabled

    NOTES
     ■ Reset of DSP disables speaker.

    SEE ALSO
     0D1h   Enable Speaker
     0D3h   Disable Speaker
     ·····················································
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     ·····················································
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
------------------------------------------------------------------------------
 0D9h       Exit Auto-Initialize DMA Operation, 16-bit              SB16
    COMMAND

    DESCRIPTION
     Terminates auto-initialized 16-bit DMA operation after current block.

    PROCEDURE                                  
      a) Perform Disable Speaker command (0D3h)
      b) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
      c) Perform Exit Auto-Initialize DMA Operation, 16-bit command (0D9h)
      d) Perform Halt DMA Operation, 16-bit command (0D5h - virtual speaker)
             
    NOTES
     ■ Halt commands are required for immediate termination and to quiet SB16.

    SEE ALSO                                              
     0D5h   Halt DMA Operation, 16-bit
     047h   Continue Auto-Initialize DMA, 16-bit
     ·····················································
     0D3h   Disable Speaker
------------------------------------------------------------------------------
 0DAh       Exit Auto-Initialize DMA Operation, 8-bit               SB2.0
    COMMAND

    DESCRIPTION
     Terminates auto-initialized 8-bit DMA operations after current block.

    PROCEDURE                                  
      a) Perform Disable Speaker command (0D3h)
      b) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
      c) Perform Exit Auto-Initialize DMA Operation, 8-bit command (0DAh)
      d) Perform Halt DMA Operation, 8-bit command (0D0h - virtual speaker)
             
    NOTES
     ■ Halt commands are required for immediate termination and to quiet SB16.

    SEE ALSO
     0D0h   Halt DMA Operation, 8-bit                 
     045h   Continue Auto-Initialize DMA, 8-bit
     ·····················································
     0D3h   Disable Speaker
------------------------------------------------------------------------------
 0E0h       DSP Identification                                      SB2.0
    COMMAND->DATA <-NOT(DATA)

    DESCRIPTION
     Returns bitwise NOT of data byte.

    NOTES
     ■ Results reliable only after DSP reset on early models.

    SEE ALSO
     0E1h   DSP Version
     0E3h   DSP Copyright
------------------------------------------------------------------------------
 0E1h       DSP Version                                             SB
    COMMAND <-MAJORVERSIONBYTE<-MINORVERSIONBYTE

    DESCRIPTION
     Determines DSP major and minor version.

    MODEL                      VERSION
     SoundBlaster 1.0           1.??  (1.05???)
     SoundBlaster 1.5           1.??  (1.05???)
     SoundBlaster 2.0           2.xx  (2.01)
     SoundBlaster Pro           3.00  (???)
     SoundBlaster Pro 2         3.01+ (3.01, 3.02)
     SoundBlaster 16            4.0x  (4.04, 4.05)
     SoundBlaster 16 SCSI-2     4.11  (4.11)
     SoundBlaster AWE32         4.12+ (4.12)

    NOTES
     ■ Ensure that no other card is mapped at the same port address by
         performing this command twice, checking for a consistent result.
     ■ BUG: Some SB1.x clones errantly return version 2.00.
     ■ BUG: Some SB16 SCSI-2s experience daughterboard communication errors.

    SEE ALSO
     0E0h   DSP Identification
     0E3h   DSP Copyright
------------------------------------------------------------------------------
 0E3h       DSP Copyright                                           SBPro2???
    COMMAND <-ASCII0...ASCIIn<-000h

    DESCRIPTION
     Reads DSP copyright string.

    PROCEDURE
      a) Send DSP Copyright command byte (0E3h)
      b) Read string byte
      c) Loop to B while string byte is not zero

    SEE ALSO
     0E0h   DSP Identification
     0E1h   DSP Version
------------------------------------------------------------------------------
 0E4h       Write Test Register                                     SB2.0
    COMMAND->TESTBYTE

    DESCRIPTION
     Writes diagnostic register.

    NOTES
     ■ DSP reset does not clear the test register.

    SEE ALSO
     0E8h   Read Test Register
------------------------------------------------------------------------------
 0E8h       Read Test Register                                      SB2.0
    COMMAND <-TESTBYTE

    DESCRIPTION
     Reads diagnostic register.

    NOTES
     ■ DSP reset does not clear the test register.

    SEE ALSO
     0E4h   Write Test Register
------------------------------------------------------------------------------
 0F0h       Sine Generator                                          SB
    COMMAND

    DESCRIPTION
     Diagnostic peak-to-peak sine wave generator.

    NOTES
     ■ Disable sound with DSP reset.
     ■ Sinusodal frequency is about 2KHz.
     ■ Sets time constant to approximately 0C0h (15625Hz).
     ■ Enables speaker on models prior to SoundBlaster 16.
------------------------------------------------------------------------------
 0F1h       DSP Auxiliary Status (Obsolete)                         SB-Pro2
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves auxiliary information about pending DSP operations.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │[1]│ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Speaker Status  (0 = Enabled)
       │   │   │   │   │   │   └─────── Reserved (1)
       │   │   │   │   │   └─────────── DSPC 0ACh ???
       │   │   │   │   └─────────────── Stereo Input Mode (1 = Stereo)
       │   │   │   └─────────────────── Reserved (1)
       │   │   └─────────────────────── DSPC 020h-02Fh (SB1.x) ???
       │   └─────────────────────────── DSPC 02Dh-02Fh (SB1.x) ???
       └─────────────────────────────── ???

    NOTES
     ■ SoundBlaster Pro introduces bit 3.

    SEE ALSO
     004h   DSP Status (Obsolete)
     ·····················································
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
     ·····················································
     0D8h   Speaker Status    
------------------------------------------------------------------------------
 0F2h       IRQ Request, 8-bit                                      SB
    COMMAND

    DESCRIPTION
     Triggers 8-bit interrupt.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform IRQ Request, 8-bit command (0F2h)
      c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 8-bit port - 02x0Eh;
                               perform Generic EOI (020h) to appropriate PICs)

    SEE ALSO
     0F3h   Interrupt Request, 16-bit
------------------------------------------------------------------------------
 0F3h       IRQ Request, 16-bit                                     SB16
    COMMAND

    DESCRIPTION
     Triggers 16-bit interrupt.

    PROCEDURE
      a) Install IRQ handler (hook vector, update PIC mask)
      b) Perform IRQ Request, 16-bit command (0F3h)
      c) IRQ: Acknowledge IRQ (input from IRQ Acknowledge, 16-bit port - 02x0Fh;
                               perform Generic EOI (020h) to appropriate PICs)

    SEE ALSO
     0F2h   Interrupt Request, 8-bit
------------------------------------------------------------------------------
 0FBh       DSP Status                                              SB16
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves information about pending DSP operations.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── DMA DAC, 8-bit  (1 = Active)
       │   │   │   │   │   │   └─────── DMA ADC, 8-bit  (1 = Active)
       │   │   │   │   │   └─────────── DMA DAC, 16-bit (1 = Active)
       │   │   │   │   └─────────────── DMA ADC, 16-bit (1 = Active)
       │   │   │   └─────────────────── Virtual Speaker (1 = Active)
       │   │   └─────────────────────── ???
       │   └─────────────────────────── DSPC 04Fh ???
       └─────────────────────────────── Time Constant   (1 = Modified)

    NOTES
     ■ Time Constant bit will not be set if too large a time constant was
        programmed (low sample rate).
     ■ MediaVision 3D-series cards use this command for DMA and IRQ selection.

    SEE ALSO
     0FCh   DSP Auxiliary Status
     0FDh   DSP Command Status
     ·····················································
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     ·····················································
     0D8h   Speaker Status     
------------------------------------------------------------------------------
 0FCh       DSP Auxiliary Status                                    SB16
    COMMAND <-STATUS

    DESCRIPTION
     Retrieves auxiliary information about pending DMA operations.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── ???
       │   │   │   │   │   │   └─────── DAC/ADC DMA           (1 = Synchronous)
       │   │   │   │   │   └─────────── Auto-Init DMA, 8-bit  (1 = Active)
       │   │   │   │   └─────────────── ???
       │   │   │   └─────────────────── Auto-Init DMA, 16-bit (1 = Active)
       │   │   └─────────────────────── ???
       │   └─────────────────────────── ???
       └─────────────────────────────── ???

    SEE ALSO
     0FBh   DSP Status
     0FDh   DSP Command Status
     ·····················································
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     ·····················································
     0D8h   Speaker Status    
------------------------------------------------------------------------------
 0FDh       DSP Command Status                                      SB16
    COMMAND <-COMMANDSTATUS

    DESCRIPTION
     Retrieves most recently successful DSP command.

    NOTES
     ■ Reseting the DSP clears this variable.
     ■ Command does not support all valid DSP commands, but most.
     ■ MediaVision 3D-series cards use this command for DMA and IRQ detection.

    SEE ALSO
     0FBh   DSP Status
     0FCh   DSP Auxiliary Status
     ·····················································
     004h   DSP Status (Obsolete)
     0F1h   DSP Auxiliary Status (Obsolete)
     ·····················································
     0D8h   Speaker Status    


==============================================================================
 MIXER REGISTERS
------------------------------------------------------------------------------
 000h       Reset                                       Write       SBPro
 001h       Status                                      Read        SBPro
 002h       Master Volume                               Read/Write  SBPro Only
 004h       DAC Level                                   Read/Write  SBPro
 006h       FM Output Control                           Read/Write  SBPro Only
 00Ah       Microphone Level                            Read/Write  SBPro
 00Ch       Input/Filter Select                         Read/Write  SBPro Only
 00Eh       Output/Stereo Select                        Read/Write  SBPro Only
 022h       Master Volume                               Read/Write  SBPro
 026h       FM Level                                    Read/Write  SBPro
 028h       CD Audio Level                              Read/Write  SBPro
 02Eh       Line In Level                               Read/Write  SBPro
 030h       Master Volume Left                          Read/Write  SB16
 031h       Master Volume Right                         Read/Write  SB16
 032h       DAC Level Left                              Read/Write  SB16
 033h       DAC Level Right                             Read/Write  SB16
 034h       FM Level Left                               Read/Write  SB16
 035h       FM Level Right                              Read/Write  SB16
 036h       CD Audio Level Left                         Read/Write  SB16
 037h       CD Audio Level Right                        Read/Write  SB16
 038h       Line In Level Left                          Read/Write  SB16
 039h       Line In Level Right                         Read/Write  SB16
 03Ah       Microphone Level                            Read/Write  SB16
 03Bh       PC Speaker Level                            Read/Write  SB16
 03Ch       Output Control                              Read/Write  SB16
 03Dh       Input Control Left                          Read/Write  SB16
 03Eh       Input Control Right                         Read/Write  SB16
 03Fh       Input Gain Control Left                     Read/Write  SB16
 040h       Input Gain Control Right                    Read/Write  SB16
 041h       Output Gain Control Left                    Read/Write  SB16
 042h       Output Gain Control Right                   Read/Write  SB16
 043h       Automatic Gain Control (AGC)                Read/Write  SB16
 044h       Treble Left                                 Read/Write  SB16
 045h       Treble Right                                Read/Write  SB16
 046h       Bass Left                                   Read/Write  SB16
 047h       Bass Right                                  Read/Write  SB16
 080h       IRQ Select                                  Read/Write  SB16
 081h       DMA Select                                  Read/Write  SB16
 082h       IRQ Status                                  Read        SB16

------------------------------------------------------------------------------
 000h       Reset                                       Write       SBPro

    DESCRIPTION
     Resets mixer to default settings.

    PROCEDURE
      a) Load index register
      b) Wait 100µs
      c) Write reset stop

    RESET BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Reset Stop (0)
       │   │   │   │   │   │   └─────┬─ Reserved   (0)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Defaults documented for each register (SBPro, SB16)
------------------------------------------------------------------------------
 001h       Status                                      Read        SBPro

    DESCRIPTION
     Contains previously selected register value.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Mixer Data Register value
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘


    NOTES
     ■ SoundBlaster 16 sets bit 7 if previous mixer index invalid.
     ■ Status bytes initially 080h on startup for all but level bytes (SB16)
------------------------------------------------------------------------------
 002h       Master Volume                               Read/Write  SBPro Only

    VOLUME BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│ 3 │ 2 │ 1 │[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Reserved (1)
       │   │   │   │   │   │   └─────┬─ Right Master Volume bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Reserved (1)
       │   │   └─────────────────────┬─ Left  Master Volume bit 3-1 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     099h, N/A

    NOTES
     ■ Same as register 022h selection.

    SEE ALSO
     022h   Master Volume                       Read/Write
     ·····················································
     030h   Master Volume Left                  Read/Write
     031h   Master Volume Right                 Read/Write
------------------------------------------------------------------------------
 004h       DAC Level                                   Read/Write  SBPro

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Right DAC Level bit  0  (SB16, SBPro=1)
       │   │   │   │   │   │   └─────┬─ Right DAC Level bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Left  DAC Level bit  0  (SB16, SBPro=1)
       │   │   └─────────────────────┬─ Left  DAC Level bit 3-1 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     099h, 0CCh

    NOTES
     ■ Mixer detection can be accomplished by looking for this register index.
     ■ SoundBlaster 16 will automatically update registers 031h and 032h,
        transferring bits 7-4 and setting bit 3.

    SEE ALSO
     032h   DAC Level Left                      Read/Write
     033h   DAC Level Right                     Read/Write
------------------------------------------------------------------------------
 006h       FM Output Control                           Read/Write  SBPro Only

    CONTROL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│ 6 │ 5 │[4]│ 3 │ 2 │ 1 │[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Reserved (1)
       │   │   │   │   │   │   └─────┬─ FM Level (bits 3-1, see notes)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Reserved (1)
       │   │   └─────────────────────── FM Left  Channel (0 = On, 1 = Off)
       │   └─────────────────────────── FM Right Channel (0 = On, 1 = Off)
       └─────────────────────────────── Reserved (0)

    DEFAULT
     019h, N/A

    NOTES
     ■ FM level controls both channels.
     ■ If only one channel is active, the inactive channel's voices will
        be routed through the active one.
     ■ SoundBlaster Pro will automatically update register 026h,
        transferring source bits 3-0 to destination bits 7-4 and 3-0.

    SEE ALSO
     026h   FM Level                            Read/Write
     ·····················································
     034h   FM Level Left                       Read/Write
     035h   FM Level Right                      Read/Write
------------------------------------------------------------------------------
 00Ah       Microphone Level                            Read/Write  SBPro

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Microphone Level bit  0  (SB16, SBPro=0)
       │   │   │   │   │   │   └─────┬─ Microphone Level bit 2-1 (SBPro)
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Reserved (0)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     011h, 000h

    SEE ALSO
     03Ah   Microphone Level                    Read/Write
------------------------------------------------------------------------------
 00Ch       Input/Filter Select                         Read/Write  SBPro Only

    SELECT BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│ 5 │[4]│ 3 │ 2 │ 1 │[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Reserved (1)
       │   │   │   │   │   │   └─────┬─ Input Select (0 = Microphone,
       │   │   │   │   │   └─────────┘                1 = CD Audio, 3 = Line In)
       │   │   │   │   └─────────────── Frequency (0 = Highpass, 1 = Lowpass)
       │   │   │   └─────────────────── Reserved (0)
       │   │   └─────────────────────── Filter Input (0 = On, 1 = Off)
       │   └─────────────────────────┬─ Reserved (0)
       └─────────────────────────────┘

    DEFAULT
     011h, N/A

    SEE ALSO
     03Dh   Input Control Left                  Read/Write
     03Eh   Input Control Right                 Read/Write
------------------------------------------------------------------------------
 00Eh       Output/Stereo Select                        Read/Write  SBPro Only

    SELECT BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│ 5 │[4]│[3]│[2]│ 1 │[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Reserved (1)
       │   │   │   │   │   │   └─────── Stereo Output Mode (1 = Stereo)
       │   │   │   │   │   └─────────┬─ Reserved (0)
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Reserved (1)
       │   │   └─────────────────────── Filter Output (0 = On, 1 = Off)
       │   └─────────────────────────┬─ Reserved (0)
       └─────────────────────────────┘

    DEFAULT
     011h, N/A

    NOTES
     ■ SoundBlaster 16 uses command 0Bxh/0Cxh for stereo output.

    SEE ALSO
     03Ch   Output Control                      Read/Write
------------------------------------------------------------------------------
 022h       Master Volume                               Read/Write  SBPro

    VOLUME BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Right Master bit  0  (SB16, SBPro=1)
       │   │   │   │   │   │   └─────┬─ Right Master bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Left  Master bit  0  (SB16, SBPro=1)
       │   │   └─────────────────────┬─ Left  Master bit 3-1 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     011h, 0CCh

    NOTES
     ■ SoundBlaster 16 will automatically update registers 030h and 031h,
        transferring bits 7-4 and setting bit 3.
     ■ SoundBlaster Pro register 002h is the same as this.

    SEE ALSO
     002h   Master Volume                       Read/Write
     ·····················································
     030h   Master Volume Left                  Read/Write
     031h   Master Volume Right                 Read/Write
------------------------------------------------------------------------------
 026h       FM Level                                    Read/Write  SBPro

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Right FM Level bit  0  (SB16, SBPro=1)
       │   │   │   │   │   │   └─────┬─ Right FM Level bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Left  FM Level bit  0  (SB16, SBPro=1)
       │   │   └─────────────────────┬─ Left  FM Level bit 3-1 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     011h, 0CCh

    NOTES
     ■ SoundBlaster 16 will automatically update registers 033h and 034h,
        transferring bits 7-4 and setting bit 3.
     ■ SoundBlaster Pro will automatically update register 006h,
        transferring bits 3-1 and setting bit 0.

    SEE ALSO
     006h   FM Output Control                   Read/Write
     ·····················································
     034h   FM Level Left                       Read/Write
     035h   FM Level Right                      Read/Write
------------------------------------------------------------------------------
 028h       CD Audio Level                              Read/Write  SBPro

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Right CD Audio bit  0  (SB16, SBPro=1)
       │   │   │   │   │   │   └─────┬─ Right CD Audio bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Left  CD Audio bit  0  (SB16, SBPro=1)
       │   │   └─────────────────────┬─ Left  CD Audio bit 3-1 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     011h, 000h

    NOTES
     ■ SoundBlaster 16 will automatically update registers 035h and 036h,
        transferring bits 7-4 and setting bit 3.

    SEE ALSO
     036h   CD Audio Level Left                 Read/Write
     037h   CD Audio Level Right                Read/Write
------------------------------------------------------------------------------
 02Eh       Line In Level                               Read/Write  SBPro

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Right Line In bit  0  (SB16, SBPro=1)
       │   │   │   │   │   │   └─────┬─ Right Line In bit 3-1 (SBPro)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────── Left  Line In bit  0  (SB16, SBPro=1)
       │   │   └─────────────────────┬─ Left  Line In bit 3-1 (SBPro)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     011h, 000h

    NOTES
     ■ SoundBlaster 16 will automatically update registers 037h and 038h,
        transferring bits 7-4 and setting bit 3.

    SEE ALSO
     038h   Line In Level Left                  Read/Write
     039h   Line In Level Right                 Read/Write
------------------------------------------------------------------------------
 030h       Master Volume Left                          Read/Write  SB16

    VOLUME BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Left Master Volume (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 0C0h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
        of register 022h
     ■ SoundBlaster Pro selects register 020h for 030h.

    SEE ALSO
     031h   Master Volume Right                 Read/Write
     ·····················································
     022h   Master Volume                       Read/Write
------------------------------------------------------------------------------
 031h       Master Volume Right                         Read/Write  SB16

    VOLUME BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Right Master Volume (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 0C0h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
        of register 022h.

    SEE ALSO
     030h   Master Volume Left                  Read/Write
     ·····················································
     022h   Master Volume                       Read/Write
------------------------------------------------------------------------------
 032h       DAC Level Left                              Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Left DAC Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 0C0h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
        of register 024h.
     ■ SoundBlaster Pro selects register 022h for 032h.

    SEE ALSO
     033h   DAC Level Right                     Read/Write
     ·····················································
     004h   DAC Level                           Read/Write
------------------------------------------------------------------------------
 033h       DAC Level Right                             Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Right DAC Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 0C0h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
        of register 024h.

    SEE ALSO
     032h   DAC Level Left                      Read/Write
     ·····················································
     004h   DAC Level                           Read/Write
------------------------------------------------------------------------------
 034h       FM Level Left                               Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Left FM Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 0C0h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
        of register 026h.

    SEE ALSO
     035h   FM Level Right                      Read/Write
     ·····················································
     006h   FM Output Control                   Read/Write
     026h   FM Level                            Read/Write
------------------------------------------------------------------------------
 035h       FM Level Right                              Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Right FM Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 0C0h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
        of register 026h.

    SEE ALSO
     034h   FM Level Left                       Read/Write
     ·····················································
     006h   FM Output Control                   Read/Write
     026h   FM Level                            Read/Write
------------------------------------------------------------------------------
 036h       CD Audio Level Left                         Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Left CD Audio Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
        of register 028h.
     ■ SoundBlaster Pro selects register 026h for 036h.

    SEE ALSO
     037h   CD Audio Level Right                Read/Write
     ·····················································
     028h   CD Audio Level                      Read/Write
------------------------------------------------------------------------------
 037h       CD Audio Level Right                        Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Right CD Audio Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
        of register 028h.

    SEE ALSO
     036h   CD Audio Level Left                 Read/Write
     ·····················································
     028h   CD Audio Level                      Read/Write
------------------------------------------------------------------------------
 038h       Line In Level Left                          Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Left Line In Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 7-4
        of register 02Eh.
     ■ SoundBlaster Pro selects register 028h for 038h.

    SEE ALSO
     039h   Line In Level Right                 Read/Write
     ·····················································
     02Eh   Line In Level                       Read/Write
------------------------------------------------------------------------------
 039h       Line In Level Right                         Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Right Line In Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ SoundBlaster 16 will automatically transfer bits 7-4 to bits 3-0
        of register 02Eh.

    SEE ALSO
     038h   Line In Level Left                  Read/Write
     ·····················································
     02Eh   Line In Level                       Read/Write
------------------------------------------------------------------------------
 03Ah       Microphone Level                            Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┘
       │   │   │   │   └─────────────┬─ Microphone Level (2dB)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    SEE ALSO
     00Ah   Microphone Level                    Read/Write
------------------------------------------------------------------------------
 03Bh       PC Speaker Level                            Read/Write  SB16

    LEVEL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┘
       │   └─────────────────────────┬─ PC Speaker Level (2dB)
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h
------------------------------------------------------------------------------
 03Ch       Output Control                              Read/Write  SB16

    CONTROL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Microphone     (0 = Off, 1 = On)
       │   │   │   │   │   │   └─────── Right CD Audio (0 = Off, 1 = On)
       │   │   │   │   │   └─────────── Left  CD Audio (0 = Off, 1 = On)
       │   │   │   │   └─────────────── Right Line In  (0 = Off, 1 = On)
       │   │   │   └─────────────────── Left  Line In  (0 = Off, 1 = On)
       │   │   └─────────────────────┬─ Reserved (0)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 01Fh

    SEE ALSO
     041h   Output Gain Control Left            Read/Write
     042h   Output Gain Control Right           Read/Write
     ·····················································
     036h   CD Audio Level Left                 Read/Write
     037h   CD Audio Level Right                Read/Write
     038h   Line In Level Left                  Read/Write
     039h   Line In Level Right                 Read/Write
     03Ah   Microphone Level                    Read/Write
     ·····················································
     00Eh   Output/Stereo Select                Read/Write
------------------------------------------------------------------------------
 03Dh       Input Control Left                          Read/Write  SB16

    CONTROL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Microphone     (0 = Off, 1 = On)
       │   │   │   │   │   │   └─────── Right CD Audio (0 = Off, 1 = On)
       │   │   │   │   │   └─────────── Left  CD Audio (0 = Off, 1 = On)
       │   │   │   │   └─────────────── Right Line In  (0 = Off, 1 = On)
       │   │   │   └─────────────────── Left  Line In  (0 = Off, 1 = On)
       │   │   └─────────────────────── Right FM       (0 = Off, 1 = On)
       │   └─────────────────────────── Left  FM       (0 = Off, 1 = On)
       └─────────────────────────────── Reserved (0)

    DEFAULT
     N/A, 015h

    NOTES
     ■ Register controls remapping of left input channel
        (off, left, right, or left and right)

    SEE ALSO
     03Eh   Input Control Right                 Read/Write
     ·····················································
     03Fh   Input Gain Control Left             Read/Write
     ·····················································
     034h   FM Level Left                       Read/Write
     035h   FM Level Right                      Read/Write
     036h   CD Audio Level Left                 Read/Write
     037h   CD Audio Level Right                Read/Write
     038h   Line In Level Left                  Read/Write
     039h   Line In Level Right                 Read/Write
     03Ah   Microphone Level                    Read/Write
     ·····················································
     00Ch   Input/Filter Select                 Read/Write
------------------------------------------------------------------------------
 03Eh       Input Control Right                         Read/Write  SB16

    CONTROL BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Microphone     (0 = Off, 1 = On)
       │   │   │   │   │   │   └─────── Right CD Audio (0 = Off, 1 = On)
       │   │   │   │   │   └─────────── Left  CD Audio (0 = Off, 1 = On)
       │   │   │   │   └─────────────── Right Line In  (0 = Off, 1 = On)
       │   │   │   └─────────────────── Left  Line In  (0 = Off, 1 = On)
       │   │   └─────────────────────── Right FM       (0 = Off, 1 = On)
       │   └─────────────────────────── Left  FM       (0 = Off, 1 = On)
       └─────────────────────────────── Reserved (0)

    DEFAULT
     N/A, 00Bh

    NOTES
     ■ Register controls remapping of right input channel
        (off, left, right, or left and right)
     ■ SoundBlaster Pro selects register 02Eh for 03Eh.

    SEE ALSO
     03Dh   Input Control Left                  Read/Write
     ·····················································
     040h   Input Gain Control Right            Read/Write
     ·····················································
     034h   FM Level Left                       Read/Write
     035h   FM Level Right                      Read/Write
     036h   CD Audio Level Left                 Read/Write
     037h   CD Audio Level Right                Read/Write
     038h   Line In Level Left                  Read/Write
     039h   Line In Level Right                 Read/Write
     03Ah   Microphone Level                    Read/Write
     ·····················································
     00Ch   Input/Filter Select                 Read/Write
------------------------------------------------------------------------------
 03Fh       Input Gain Control Left                     Read/Write  SB16

    GAIN BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┘
       │   └─────────────────────────┬─ Left Input Gain Control (2^x)
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    SEE ALSO
     040h   Input Gain Control Right            Read/Write
     ·····················································
     043h   Automatic Gain Control (AGC)        Read/Write
     ·····················································
     03Dh   Input Control Left                  Read/Write
------------------------------------------------------------------------------
 040h       Input Gain Control Right                    Read/Write  SB16

    GAIN BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┘
       │   └─────────────────────────┬─ Right Input Gain Control (2^x)
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    SEE ALSO
     03Fh   Input Gain Control Left             Read/Write
     ·····················································
     043h   Automatic Gain Control (AGC)        Read/Write
     ·····················································
     03Dh   Input Control Right                 Read/Write
------------------------------------------------------------------------------
 041h       Output Gain Control Left                    Read/Write  SB16

    GAIN BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┘
       │   └─────────────────────────┬─ Left Output Gain Control (2^x)
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ Output Gain Control has no effect when internal amplifier disabled.

    SEE ALSO
     042h   Output Gain Control Right           Read/Write
     ·····················································
     03Ch   Output Control                      Read/Write
------------------------------------------------------------------------------
 042h       Output Gain Control Right                   Read/Write  SB16

    GAIN BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │[5]│[4]│[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┘
       │   └─────────────────────────┬─ Right Output Gain Control (2^x)
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ Output Gain Control has no effect when internal amplifier disabled.

    SEE ALSO
     041h   Output Gain Control Left            Read/Write
     ·····················································
     03Ch   Output Control                      Read/Write
------------------------------------------------------------------------------
 043h       Automatic Gain Control (AGC)                Read/Write  SB16

    AGC BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│[2]│[1]│ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Automatic Gain Control (1 = Enable)
       │   │   │   │   │   │   └─────┬─ Reserved (0)
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 000h

    NOTES
     ■ Automatic Gain Control automatically maximizes input signal strength.

    SEE ALSO
     03Fh   Input Gain Control Left             Read/Write
     040h   Input Gain Control Right            Read/Write
------------------------------------------------------------------------------
 044h       Treble Left                                 Read/Write  SB16

    TREBLE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Treble Left (2dB, -14dB to 14dB)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 080h

    SEE ALSO
     045h   Treble Right                        Read/Write
     ·····················································
     046h   Bass Left                           Read/Write
------------------------------------------------------------------------------
 045h       Treble Right                                Read/Write  SB16

    TREBLE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Treble Right (2dB, -14dB to 14dB)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 080h

    SEE ALSO
     044h   Treble Left                         Read/Write
     ·····················································
     047h   Bass Right                          Read/Write
------------------------------------------------------------------------------
 046h       Bass Left                                   Read/Write  SB16

    BASS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Bass Left (2dB, -14dB to 14dB)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 080h

    SEE ALSO
     047h   Bass Right                          Read/Write
     ·····················································
     044h   Treble Left                         Read/Write
------------------------------------------------------------------------------
 047h       Bass Right                                  Read/Write  SB16

    BASS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │[3]│[2]│[1]│[0]║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Reserved (0)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Bass Right (2dB, -14dB to 14dB)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    DEFAULT
     N/A, 080h

    SEE ALSO
     046h   Bass Left                           Read/Write
     ·····················································
     045h   Treble Right                        Read/Write
------------------------------------------------------------------------------
 080h       IRQ Select                                  Read/Write  SB16

    SELECT BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── IRQ2  (0 = Disable, 1 = Enable)
       │   │   │   │   │   │   └─────── IRQ5  (0 = Disable, 1 = Enable)
       │   │   │   │   │   └─────────── IRQ7  (0 = Disable, 1 = Enable)
       │   │   │   │   └─────────────── IRQ10 (0 = Disable, 1 = Enable)
       │   │   │   └─────────────────┬─ Reserved (1)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Unaffected by mixer reset or soft reboot.
     ■ Enabling multiple bits enables multiple IRQs.

    SEE ALSO
     081h   DMA Select                          Read/Write
     ·····················································
     082h   IRQ Status                          Read
------------------------------------------------------------------------------
 081h       DMA Select                                  Read/Write  SB16

    SELECT BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │[4]│ 3 │[2]│ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── DMA0, 8-bit  (0 = Disable, 1 = Enable)
       │   │   │   │   │   │   └─────── DMA1, 8-bit  (0 = Disable, 1 = Enable)
       │   │   │   │   │   └─────────── DMA2, Reserved (0)
       │   │   │   │   └─────────────── DMA3, 8-bit  (0 = Disable, 1 = Enable)
       │   │   │   └─────────────────── DMA4, Reserved (0)
       │   │   └─────────────────────── DMA5, 16-bit (0 = Disable, 1 = Enable)
       │   └─────────────────────────── DMA6, 16-bit (0 = Disable, 1 = Enable)
       └─────────────────────────────── DMA7, 16-bit (0 = Disable, 1 = Enable)

    NOTES
     ■ Unaffected by mixer reset or soft reboot.
     ■ Enabling multiple 8 or 16-bit DMA bits enables multiple DMA channels.
     ■ Disabling all 8-bit DMA channel bits disables 8-bit DMA requests,
        including translated 16-bit DMA requests.
     ■ Disabling all 16-bit DMA channel bits enables translation of 16-bit DMA
        requests to 8-bit ones, using the selected 8-bit DMA channel.

    SEE ALSO
     080h   IRQ Select                          Read/Write
------------------------------------------------------------------------------
 082h       IRQ Status                                  Read        SB16

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── IRQ Status, 8-bit   (1 = Active)
       │   │   │   │   │   │   └─────── IRQ Status, 16-bit  (1 = Active)
       │   │   │   │   │   └─────────── IRQ Status, MPU-401 (1 = Active)
       │   │   │   │   └─────────────── Reserved (0)
       │   │   │   └─────────────────┬─ ???
       │   │   └─────────────────────┤  (01h = v4.04, 02h = v4.05, 08h = v4.12)
       │   └─────────────────────────┤
       └─────────────────────────────┘

    SEE ALSO
     080h   IRQ Select                          Read/Write


==============================================================================
 DMA CONTROLLERS
------------------------------------------------------------------------------

 ┌-────────┐     ┌──┬┬──┐              ┌──┬┬──┐
 │ ┌─────┐ │    ╒╡  └┘  ╞╕─Channel 4──╒╡  └┘  ╞╕─── Channel 0 ┐
 │ │ CPU │ │────╒╡ DMA2 ╞╕──────────┐ ╒╡ DMA1 ╞╕─── Channel 1 ├ 8-bit
 │ └─────┘ │    ╒╡ 8237 ╞╕────────┐ │ ╒╡ 8237 ╞╕─── Channel 2 │
 └────────┘     ╒╡      ╞╕──────┐ │ │ ╒╡      ╞╕─── Channel 3 ┘
                 └──────┘       │ │ │  └──────┘
                                │ │ └────────────── Channel 5 ┐
   DMAC ORGANIZATION (AT)       │ └──────────────── Channel 6 ├ 16-bit
                                └────────────────── Channel 7 ┘

 ─────────────────────────────────────────────────────────────────────────────

 ╔═══════════════╤═════════════════╤═════════════════╗
 ║  DMA CHANNEL  │ AT ARCHITECTURE │ XT ARCHITECTURE ║
 ║               │                 │                 ║
 ╠═══════════════╪═════════════════╪═════════════════╣  ┐
 ║       0       │ AVAILABLE       │ DRAM REFRESH    ║  │
 ╟───────────────┼─────────────────┼─────────────────╢  ├ Memory-Memory support
 ║       1       │ AVAILABLE       │ AVAILABLE       ║  │
 ╟───────────────┼─────────────────┼─────────────────╢  ┘
 ║       2       │ FLOPPY CONTRLR. │ FLOPPY CONTRLR. ║
 ╟───────────────┼─────────────────┼─────────────────╢
 ║       3       │ AVAILABLE       │ HDD CONTROLLER  ║
 ╟---------------┼-----------------┼-----------------╢
 ║       4       │ CASCADE         │ N/A             ║
 ╟───────────────┼─────────────────┼─────────────────╢
 ║       5       │ AVAILABLE       │ N/A             ║
 ╟───────────────┼─────────────────┼─────────────────╢
 ║       6       │ AVAILABLE       │ N/A             ║
 ╟───────────────┼─────────────────┼─────────────────╢
 ║       7       │ AVAILABLE       │ N/A             ║
 ╚═══════════════╧═════════════════╧═════════════════╝

 ─────────────────────────────────────────────────────────────────────────────
  PROCEDURE
 ─────────────────────────────────────────────────────────────────────────────

  1) Enable channel mask
      OUT     00Ah,004h OR cChannel              ( 8-bit)
     ·····················································
      OUT     0D4h,004h OR cChannel              (16-bit)

  2) Clear byte pointer
      OUT     00Ch,...                           ( 8-bit)
     ·····················································
      OUT     0D8h,...                           (16-bit)

  3) Configure transfer mode
      OUT     00Bh,cMode OR cChannel             ( 8-bit)
     ·····················································
      OUT     0D6h,cMode OR cChannel             (16-bit)

  4) Write page address
      OUT    { 087h,083h,081h,082h },cPage       ( 8-bit)
     ·····················································
      OUT    { 08Fh,08Bh,089h,08Ah },cPage       (16-bit)

  5) Write offset address
      OUT    { 000h,002h,004h,006h },cAddressLo  ( 8-bit)
      OUT    { 000h,002h,004h,006h },cAddressHi
     ·····················································
      OUT    { 0C0h,0C4h,0C8h,0CCh },cAddressLo  (16-bit)
      OUT    { 0C0h,0C4h,0C8h,0CCh },cAddressHi

  6) Write length - 1
      OUT    { 001h,003h,005h,007h },cLengthLo   ( 8-bit)
      OUT    { 001h,003h,005h,007h },cLengthHi
     ·····················································
      OUT    { 0C2h,0C6h,0CAh,0CEh },cLengthLo   (16-bit)
      OUT    { 0C2h,0C6h,0CAh,0CEh },cLengthHi

  7) Disable channel mask
      OUT     00Ah,cChannel                      ( 8-bit)
     ·····················································
      OUT     0D4h,cChannel                      (16-bit)

------------------------------------------------------------------------------
 000h       Channel 0 Address, 8-bit                    Read/Write  XT

    DESCRIPTION
     Programs channel transfer offset address (byte granular).

    PROCEDURE
     a) Output LSB of offset address (port 000h)
     b) Output MSB of offset address (port 000h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     087h   Channel 0 Page, 8-bit               Write
     001h   Channel 0 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 001h       Channel 0 Length, 8-bit                     Read/Write  XT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 001h)
     b) Output MSB of length (port 001h)

    LENGTH = BYTES - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     087h   Channel 0 Page, 8-bit               Write
     000h   Channel 0 Address, 8-bit            Read/Write
------------------------------------------------------------------------------
 002h       Channel 1 Address, 8-bit                    Read/Write  XT

    DESCRIPTION
     Programs channel transfer offset address (byte granular).

    PROCEDURE
     a) Output LSB of offset address (port 002h)
     b) Output MSB of offset address (port 002h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     083h   Channel 1 Page, 8-bit               Write
     003h   Channel 1 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 003h       Channel 1 Length, 8-bit                     Read/Write  XT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 003h)
     b) Output MSB of length (port 003h)

    LENGTH = BYTES - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     083h   Channel 1 Page, 8-bit               Write
     002h   Channel 1 Address, 8-bit            Read/Write
------------------------------------------------------------------------------
 004h       Channel 2 Address, 8-bit                    Read/Write  XT

    DESCRIPTION
     Programs channel transfer offset address (byte granular).

    PROCEDURE
     a) Output LSB of offset address (port 004h)
     b) Output MSB of offset address (port 004h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     081h   Channel 2 Page, 8-bit               Write
     005h   Channel 2 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 005h       Channel 2 Length, 8-bit                     Read/Write  XT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 005h)
     b) Output MSB of length (port 005h)

    LENGTH = BYTES - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     081h   Channel 2 Page, 8-bit               Write
     004h   Channel 2 Address, 8-bit            Read/Write
------------------------------------------------------------------------------
 006h       Channel 3 Address, 8-bit                    Read/Write  XT

    DESCRIPTION
     Programs channel transfer offset address (byte granular).

    PROCEDURE
     a) Output LSB of offset address (port 006h)
     b) Output MSB of offset address (port 006h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     082h   Channel 3 Page, 8-bit               Write
     007h   Channel 3 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 007h       Channel 3 Length, 8-bit                     Read/Write  XT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 007h)
     b) Output MSB of length (port 007h)

    LENGTH = BYTES - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     082h   Channel 3 Page, 8-bit               Write
     006h   Channel 3 Address, 8-bit            Read/Write
------------------------------------------------------------------------------
 008h       Status Register, 8-bit                      Read        XT

    DESCRIPTION
     Controller channel status register.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Channel 0 Terminal Count (1 = Reached)
       │   │   │   │   │   │   └─────── Channel 1 Terminal Count (1 = Reached)
       │   │   │   │   │   └─────────── Channel 2 Terminal Count (1 = Reached)
       │   │   │   │   └─────────────── Channel 3 Terminal Count (1 = Reached)
       │   │   │   └─────────────────── Channel 0 DREQ           (1 = Active )
       │   │   └─────────────────────── Channel 1 DREQ           (1 = Active )
       │   └─────────────────────────── Channel 2 DREQ           (1 = Active )
       └─────────────────────────────── Channel 3 DREQ           (1 = Active )

    NOTES
     ■ Terminal count bit indicates transfer complete.
------------------------------------------------------------------------------
 008h       Command Register, 8-bit                     Write       XT

    DESCRIPTION
     Controller configuration register.

    COMMAND BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Mem-Mem Transfer         (1 = Enable)
       │   │   │   │   │   │   └─────── Channel 0-4 Address Hold (1 = Enable)
       │   │   │   │   │   └─────────── Controller (0 = Enable, 1 = Disable)
       │   │   │   │   └─────────────── Timing     (0 = Normal, 1 = Compressed)
       │   │   │   └─────────────────── Priority   (0 = Fixed, 1 = Rotating)
       │   │   └─────────────────────── Write Mode (0 = Late,  1 = Extended)
       │   └─────────────────────────── DREQ Active Sensing (0 = Low, 1 = High)
       └─────────────────────────────── DACK Active Sensing (0 = Low, 1 = High)
------------------------------------------------------------------------------
 009h       Request Register, 8-bit                     Write       XT

    DESCRIPTION
     ???

    REQUEST BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Channel Select
       │   │   │   │   │   │   └─────┘
       │   │   │   │   │   └─────────── Channel Request (1 = Enable)
       │   │   │   │   └─────────────┬─ Reserved (0)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘
------------------------------------------------------------------------------
 00Ah       Single Mask Register, 8-bit                 Write       XT

    DESCRIPTION
     Selects individual DMA channel, and enables or disables it.

    MASK BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Channel Select
       │   │   │   │   │   │   └─────┘
       │   │   │   │   │   └─────────── Channel Mask (0 = Clear, 1 = Set)
       │   │   │   │   └─────────────┬─ Reserved (0)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Program the mask register before programming channel.

    SEE ALSO
     00Fh   Master Mask Register, 8-bit         Write
------------------------------------------------------------------------------
 00Bh       Mode Register, 8-bit                        Write       XT

    DESCRIPTION
     Selects and configures individual DMA channel.

    MODE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Channel Select
       │   │   │   │   │   │   └─────┘
       │   │   │   │   │   └─────────┬─ Operation       (0 = Verify,
       │   │   │   │   └─────────────┘                   1 = Write, 2 = Read)
       │   │   │   └─────────────────── Auto-Initialize (0 = Off, 1 = On)
       │   │   └─────────────────────── Direction       (0 = Increment)
       │   └─────────────────────────┬─ Operation Mode  (0 = Demand,1 = Single,
       └─────────────────────────────┘                   2 = Block, 3 = Cascade)

    NOTES
     ■ Demand mode

         ╓───────┐   ┌──────────────────┐  ┌───┐  ┌──────┐   ┌───────╖
         ║  DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├──│ DACK ├───│ DONE  ║
         ╙──────┬┘Y  └──────────────────┘  └─┬─┘N └──┬──┬┘   └───────╜
             └──┘N   │                       │Y   └──┘N │Y
                     │           ┌────┐    ┌─┴─┐        │
                     └───────────┤DREQ│────┤EOP├────────┘
                                Y└───┬┘   N└───┘Y
                                  └──┘N

        Transfer begins as soon as DREQ becomes active and continues until
         terminal count is reached or an external end-of-process (EOP) is
         signalled.  In auto-initialized mode, only an external EOP stops
         the transfer.  Deactivating DREQ pauses the transfer, reactivating
         it continues.


     ■ Single mode

         ╓───────┐   ┌──────────────────┐  ┌───┐             ┌───────╖
         ║  DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├─────────────│ DONE  ║
         ╙───────┘   └──────────────────┘  └─┬─┘N            └───────╜
                     │                       │Y
                     │ ┌──────┐  ┌────┐      │
                     └─┤ DACK │──┤DREQ│──────┘
                      Y└───┬──┘ Y└───┬┘
                        └──┘N     └──┘N

        Transfer begins as soon as DREQ becomes active and continues until
         the next byte is transferred and loops until terminal count.


     ■ Block mode

         ╓───────┐   ┌──────────────────┐  ┌───┐  ┌──────┐   ┌───────╖
         ║  DREQ ├───┤ TERMINAL COUNT-1 ├──┤ ? ├──│ DACK ├───│ DONE  ║
         ╙──────┬┘Y  └──────────────────┘  └─┬─┘N └──┬──┬┘   └───────╜
             └──┘N   │                       │Y   └──┘N │Y
                     │                     ┌─┴─┐        │
                     └─────────────────────┤EOP├────────┘
                                          N└───┘Y

        Transfer begins as soon as DREQ becomes active and continues until
         terminal count is reached or an external end-of-process (EOP) is
         signalled.  In auto-initialized mode, only an external EOP stops
         the transfer.


     ■ Cascade mode

        Reserved for chaining DMA controllers.
------------------------------------------------------------------------------
 00Ch       Clear Byte Pointer Register, 8-bit          Write       XT

    DESCRIPTION
     Resets 8-bit DMA controller address pointer on output (any value).
------------------------------------------------------------------------------
 00Dh       Temporary Register, 8-bit                   Read        XT

    DESCRIPTION
     Contains memory-to-memory data bytes.
------------------------------------------------------------------------------
 00Dh       Master Reset Register, 8-bit                Write       XT

    DESCRIPTION
     Resets 8-bit DMA controller and all its channels on output (any value).

    SEE ALSO
     00Eh   Master Enable Register, 8-bit       Write
------------------------------------------------------------------------------
 00Eh       Master Enable Register, 8-bit               Write       XT

    DESCRIPTION
     Enables all 8-bit DMA controller channels on output (any value).

    SEE ALSO
     00Dh   Master Reset Register, 8-bit        Write
------------------------------------------------------------------------------
 00Fh       Master Mask Register, 8-bit                 Write       XT

    DESCRIPTION
     Selects multiple DMA channels, enabling or disabling them.

    MASK BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Channel 0 (0 = Enable, 1 = Disable)
       │   │   │   │   │   │   └─────── Channel 1 (0 = Enable, 1 = Disable)
       │   │   │   │   │   └─────────── Channel 2 (0 = Enable, 1 = Disable)
       │   │   │   │   └─────────────── Channel 3 (0 = Enable, 1 = Disable)
       │   │   │   └─────────────────┬─ Reserved (0)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    SEE ALSO
     00Ah   Single Mask Register, 8-bit         Write
------------------------------------------------------------------------------
 081h       Channel 2 Page, 8-bit                       Write       XT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 2 (64K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Reserved (0)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.

    SEE ALSO
     004h   Channel 2 Address, 8-bit            Read/Write
     005h   Channel 2 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 082h       Channel 3 Page, 8-bit                       Write       XT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 3 (64K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Reserved (0)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.

    SEE ALSO
     006h   Channel 3 Address, 8-bit            Read/Write
     007h   Channel 3 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 083h       Channel 1 Page, 8-bit                       Write       XT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 1 (64K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Reserved (0)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.

    SEE ALSO
     002h   Channel 1 Address, 8-bit            Read/Write
     003h   Channel 1 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 087h       Channel 0 Page, 8-bit                       Write       XT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 0 (64K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┘
       │   │   │   └─────────────────┬─ Reserved (0)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 1M of physical memory with 8-bit DMA.

    SEE ALSO
     000h   Channel 0 Address, 8-bit            Read/Write
     001h   Channel 0 Length, 8-bit             Read/Write
------------------------------------------------------------------------------
 089h       Channel 6 Page, 16-bit                      Write       AT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 6 (128K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.

    SEE ALSO
     0C8h   Channel 6 Address, 16-bit           Read/Write
     0CAh   Channel 6 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 08Ah       Channel 7 Page, 16-bit                      Write       AT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 7 (128K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.

    SEE ALSO
     0CCh   Channel 7 Address, 16-bit           Read/Write
     0CEh   Channel 7 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 08Bh       Channel 5 Page, 16-bit                      Write       AT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 5 (128K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.

    SEE ALSO
     0C4h   Channel 5 Address, 16-bit           Read/Write
     0C6h   Channel 5 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 08Fh       Channel 4 Page, 16-bit                      Write       AT

    DESCRIPTION
     Programs channel page address.

    PAGE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Page, Channel 4 (128K granular)
       │   │   │   │   │   │   └─────┤
       │   │   │   │   │   └─────────┤
       │   │   │   │   └─────────────┤
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Reserved channel for cascading DMA controllers.
     ■ Page addressing allows access to 16M of physical memory with 16-bit DMA.

    SEE ALSO
     0C0h   Channel 4 Address, 16-bit           Read/Write
     0C2h   Channel 4 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 0C0h       Channel 4 Address, 16-bit                   Read/Write  AT

    DESCRIPTION
     Programs channel transfer offset address (word granular).

    PROCEDURE
     a) Output LSB of offset address/2 (port 0C0h)
     b) Output MSB of offset address/2 (port 0C0h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     08Fh   Channel 4 Page, 16-bit              Write
     0C2h   Channel 4 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 0C2h       Channel 4 Length, 16-bit                    Read/Write  AT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 0C2h)
     b) Output MSB of length (port 0C2h)

    LENGTH = BYTES/2 - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     08Fh   Channel 4 Page, 16-bit              Write
     0C0h   Channel 4 Address, 16-bit           Read/Write
------------------------------------------------------------------------------
 0C4h       Channel 5 Address, 16-bit                   Read/Write  AT

    DESCRIPTION
     Programs channel transfer offset address (word granular).

    PROCEDURE
     a) Output LSB of offset address/2 (port 0C4h)
     b) Output MSB of offset address/2 (port 0C4h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     08Bh   Channel 5 Page, 16-bit              Write
     0C6h   Channel 5 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 0C6h       Channel 5 Length, 16-bit                    Read/Write  AT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 0C6h)
     b) Output MSB of length (port 0C6h)

    LENGTH = BYTES/2 - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     08Bh   Channel 5 Page, 16-bit              Write
     0C4h   Channel 5 Address, 16-bit           Read/Write
------------------------------------------------------------------------------
 0C8h       Channel 6 Address, 16-bit                   Read/Write  AT

    DESCRIPTION
     Programs channel transfer offset address (word granular).

    PROCEDURE
     a) Output LSB of offset address/2 (port 0C8h)
     b) Output MSB of offset address/2 (port 0C8h)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     089h   Channel 6 Page, 16-bit              Write
     0CAh   Channel 6 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 0CAh       Channel 6 Length, 16-bit                    Read/Write  AT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 0CAh)
     b) Output MSB of length (port 0CAh)

    LENGTH = BYTES/2 - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     089h   Channel 6 Page, 16-bit              Write
     0C8h   Channel 6 Address, 16-bit           Read/Write
------------------------------------------------------------------------------
 0CCh       Channel 7 Address, 16-bit                   Read/Write  AT

    DESCRIPTION
     Programs channel transfer offset address (word granular).

    PROCEDURE
     a) Output LSB of offset address/2 (port 0CEh)
     b) Output MSB of offset address/2 (port 0CEh)

    NOTES
     ■ Reading port retrieves current transfer offset address.

    SEE ALSO
     08Ah   Channel 7 Page, 16-bit              Write
     0CEh   Channel 7 Length, 16-bit            Read/Write
------------------------------------------------------------------------------
 0CEh       Channel 7 Length, 16-bit                    Read/Write  AT

    DESCRIPTION
     Programs channel transfer length.

    PROCEDURE
     a) Output LSB of length (port 0CEh)
     b) Output MSB of length (port 0CEh)

    LENGTH = BYTES/2 - 1

    NOTES
     ■ Reading port retrieves transfer length remaining.

    SEE ALSO
     08Ah   Channel 7 Page, 16-bit              Write
     0CCh   Channel 7 Address, 16-bit           Read/Write
------------------------------------------------------------------------------
 0D0h       Status Register, 16-bit                     Read        AT

    DESCRIPTION
     Controller channel status register.

    STATUS BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Channel 4 Terminal Count (1 = Reached)
       │   │   │   │   │   │   └─────── Channel 5 Terminal Count (1 = Reached)
       │   │   │   │   │   └─────────── Channel 6 Terminal Count (1 = Reached)
       │   │   │   │   └─────────────── Channel 7 Terminal Count (1 = Reached)
       │   │   │   └─────────────────── Channel 4 DREQ           (1 = Active )
       │   │   └─────────────────────── Channel 5 DREQ           (1 = Active )
       │   └─────────────────────────── Channel 6 DREQ           (1 = Active )
       └─────────────────────────────── Channel 7 DREQ           (1 = Active )

    NOTES
     ■ Terminal count bit indicates transfer complete.
------------------------------------------------------------------------------
 0D0h       Command Register, 16-bit                    Write       AT

    DESCRIPTION
     Controller configuration register.

    COMMAND BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Mem-Mem Transfer         (1 = Enable)
       │   │   │   │   │   │   └─────── Channel 0-4 Address Hold (1 = Enable)
       │   │   │   │   │   └─────────── Controller (0 = Enable, 1 = Disable)
       │   │   │   │   └─────────────── Timing     (0 = Normal, 1 = Compressed)
       │   │   │   └─────────────────── Priority   (0 = Fixed, 1 = Rotating)
       │   │   └─────────────────────── Write Mode (0 = Late,  1 = Extended)
       │   └─────────────────────────── DREQ Active Sensing (0 = Low, 1 = High)
       └─────────────────────────────── DACK Active Sensing (0 = Low, 1 = High)
------------------------------------------------------------------------------
 0D2h       Request Register, 16-bit                    Write       AT

    DESCRIPTION
     ???

    REQUEST BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Channel Select (-4)
       │   │   │   │   │   │   └─────┘
       │   │   │   │   │   └─────────── Channel Request (1 = Enable)
       │   │   │   │   └─────────────┬─ Reserved (0)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘
------------------------------------------------------------------------------
 0D4h       Single Mask Register, 16-bit                Write       AT

    DESCRIPTION
     Selects individual DMA channel, and enables or disables it.

    MASK BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│[3]│ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Channel Select (-4)
       │   │   │   │   │   │   └─────┘
       │   │   │   │   │   └─────────── Channel Mask (0 = Clear, 1 = Set)
       │   │   │   │   └─────────────┬─ Reserved (0)
       │   │   │   └─────────────────┤
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    NOTES
     ■ Program the mask register before programming channel.

    SEE ALSO
     0DEh   Master Mask Register, 16-bit        Write
------------------------------------------------------------------------------
 0D6h       Mode Register, 16-bit                       Write       AT

    DESCRIPTION
     Selects and configures individual DMA channel.

    MODE BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─┬─ Channel Select (-4)
       │   │   │   │   │   │   └─────┘
       │   │   │   │   │   └─────────┬─ Operation       (0 = Verify,
       │   │   │   │   └─────────────┘                   1 = Write, 2 = Read)
       │   │   │   └─────────────────── Auto-Initialize (0 = Off, 1 = On)
       │   │   └─────────────────────── Direction       (0 = Increment)
       │   └─────────────────────────┬─ Operation Mode  (0 = Demand,1 = Single,
       └─────────────────────────────┘                   2 = Block, 3 = Cascade)

    NOTES
     ■ See register 00Bh notes for description of modes.
------------------------------------------------------------------------------
 0D8h       Clear Byte Pointer Register, 16-bit         Write       AT

    DESCRIPTION
     Resets 16-bit DMA controller address pointer on output (any value).
------------------------------------------------------------------------------
 0DAh       Temporary Register, 16-bit                  Read        AT

    DESCRIPTION
     Contains memory-to-memory data words.

    NOTES
     ■ Reserved for cascading DMA controllers on AT architecture.
------------------------------------------------------------------------------
 0DAh       Master Reset Register, 16-bit               Write       AT

    DESCRIPTION
     Resets 16-bit DMA controller and all its channels on output (any value).

    SEE ALSO
     0DCh   Master Enable Register, 16-bit      Write
------------------------------------------------------------------------------
 0DCh       Master Enable Register, 16-bit              Write       AT

    DESCRIPTION
     Enables all 16-bit DMA controller channels on output (any value).

    SEE ALSO
     0DAh   Master Reset Register, 16-bit       Write
------------------------------------------------------------------------------
 0DEh       Master Mask Register, 16-bit                Write       AT

    DESCRIPTION
     Selects multiple DMA channels, enabling or disabling them.

    MASK BYTE
     ╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
     ║[7]│[6]│[5]│[4]│ 3 │ 2 │ 1 │ 0 ║
     ╚═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╧═╤═╝
       │   │   │   │   │   │   │   └─── Channel 4 (0 = Enable, 1 = Disable)
       │   │   │   │   │   │   └─────── Channel 5 (0 = Enable, 1 = Disable)
       │   │   │   │   │   └─────────── Channel 6 (0 = Enable, 1 = Disable)
       │   │   │   │   └─────────────── Channel 7 (0 = Enable, 1 = Disable)
       │   │   │   └─────────────────┬─ Reserved (0)
       │   │   └─────────────────────┤
       │   └─────────────────────────┤
       └─────────────────────────────┘

    SEE ALSO
     0D4h   Single Mask Register, 16-bit        Write


==============================================================================
 GLOSSARY
------------------------------------------------------------------------------

 Adaptive Differential Pulse Code Modulation (ADPCM)

  Creative Labs ADPCM does not follow the CCITT ADPCM recommendations,
  but does provide a similar quality compression scheme for 8-bit samples
  (down to 2, 2.6, or 4-bits per sample).

  Creative Labs ADPCM is not supported by many SoundBlaster clones.

 ·············································································

 Advanced Signal Processor (ASP, CSP)

  Creative Labs proprietary programmable signal processor.

  Although development tools for the ASP are scarce, Creative Labs has
  released demo software implementing QSound technology and various
  compression schemes (from IMA ADPCM to µ-law and α-law).

  Recently renamed from ASP to CSP (Creative Signal Processor) to avoid
  confusion with a U.S. company of the same name.

 ·············································································

 Aliasing

  Digital artifacts indicative of finite numerical representation, especially
  noticeble at areas of high deviation.

 ·············································································

 Amplitude

  Maximum departure of the value of an alternating current or wave from an
  average value.  In acoustics, amplitude is intimately related to loudness.

 ·············································································

 Amplitude Modulation (AM)

  Carrier wave amplitude modulation in response to the strength of a signal.

 ·············································································

 Analog

  Representation with periodic waves.  Contrast digital.

 ·············································································

 Analog-To-Digital Convertor (ADC)

  Device which converts from an analog signal (such as sound) to a digital one.

 ·············································································

 Auto-Initialize Mode (AI)

  Mode where DMA controller processes multiple blocks without explicit
  reprogramming.  Contrast single-cycle mode.

 ·············································································

 Bass

  Acoustic quality describing sounds of lower frequency in the spectrum.

 ·············································································

 Creative Music Synthesis??? (C/MS)

  Obsolete AM synthesizer chipset implementing twelve stereo sine generators
  modulated in predefined banks by one of four programmable noise generators.

  Originally implemented on the Creative Labs GameBlaster card; supported by
  the SoundBlaster 1.0 and 1.5 (as an upgrade option).

 ·············································································

 Decibel (dB)

  Unit of measurement describing the ratio of two acoustic, mechanical, or
  electrical signal strengths; expressed as ten times the common logarithm
  of their power ratio.

 ·············································································

 Digital

  Representation with finite numerical elements.  Contrast analog.

 ·············································································

 Digital Signal Processor (DSP)

  Device which performs mathematical operations across a digital waveform.
  SoundBlasters barely qualify, with only ADPCM to their name.

 ·············································································

 Digital-To-Analog Convertor (DAC)

  Device which converts from a digital signal to an analog one.

 ·············································································

 Direct Memory Access (DMA)

  Method of using external hardware to perform block memory copy operations
  so the central processing unit can be dedicated to more sophisticated tasks.

 ·············································································

 Frequency

  Number of repetitive occurences, or cycles, within a given time domain.

 ·············································································

 Frequency Modulation (FM)

  Carrier wave frequency modulation in response to a signal; resulting in
  decreased distortion levels.

 ·············································································

 Frequency Modulation Synthesis (FM Synthesis)

  Describes a method of synthesizing sound using a programmable carrier and
  one or more programmable frequency modulators.  Popularized by Fairlight.

  Yamaha OPL-hardware implementation is closer to phase modulation.

 ·············································································

 Gain

  Ratio of increase of input over output in an amplifier.

 ·············································································

 General MIDI

  Standardized 128-entry patch map and associated specifications.
  Patch quality differs greatly across implementations.

  Regulated by the MIDI Manufacturer's Association (MMA).

 ·············································································

 Hertz (Hz)

  Unit of frequency measurement describing number of cycles per second.

 ·············································································

 High Speed Mode

  SoundBlaster DMA transfer mode operating at a frequency greater than 23kHz,
  using up clocks cycles otherwise destined for DSP command interpretation.

  Obsolete on SoundBlaster 16, but supported. (unofficial)

 ·············································································

 Mixer

  SoundBlaster component analagous to an army of volume controls.

 ·············································································

 MPU-401

  Developed by Roland, the MPU-401 is the industry standard MIDI interface.
  It can operate either as an intelligent or a dumb UART.

 ·············································································

 Music Instrument Digital Interface (MIDI)

  Standard for communication between electronic musical instruments, related
  hardware, and digital computers.  Serial protocol operating at 38.4Kbps.

 ·············································································

 Nyquist Theorem

  Accurate reproduction of a signal demands that the sampling frequency be
  at least twice the rate of the highest frequency in the source signal.

 ·············································································

 Pulse Code Modulation (PCM)

  Digital sound reproduction method that outputs discrete amplitude values
  at a steady rate to produce an analog sound.

 ·············································································

 QSound (tm)

  Filtering technique providing a larger panning arc than traditional
  stereo techniques (180°).  Licensed by Creative Labs.

 ·············································································

 Sample

  Digital representation of analog signal.

 ·············································································

 Single Cycle Mode (SC)

  Mode where DMA controller processes a single block.  Contrast auto-init mode.

 ·············································································

 Treble

  Acoustic quality describing sounds of higher frequency in the spectrum.

 ·············································································

 Universal Asynchronous Receiver/Transmitter (UART)

  Device responsible for conversion to or from a serial bit stream.

 ·············································································

 Wave Table Synthesis

  Synthesis method employing sampled instruments and sounds as opposed to
   artifically generated sound effects.

 ·············································································

==============================================================================
 ACKNOWLEDGEMENTS
------------------------------------------------------------------------------
 Ron Arts, Chris Barrett, Hussam Eassa, Brandom Hume, Cornel Huth, 
 Draeden/VLA, Jeffery Lee, Alain Jacques, Jerry Joplin, Eckard Lehmann, 
 Juan Carlos Leon, Bob Manson, Tom Marshall, Richard Mulder, Josha Munnik, 
 Eric Oostendorp, Tino Riethmueller, Jim Roberts, Peter Roberts, 
 Jens-Uwe Rumstich, Daniel Sachs, Edward Schlunder, Peter Sprenger, 
 Heiko Stassburg, Mark Stehr, Jim Vieira

==============================================================================
 REFERENCES
------------------------------------------------------------------------------

STANDARDS
 ────────────────────────────────────────────────────────────────────────────
  CCITT G.721 - ADPCM @ 32 kbits/sec
  CCITT G.723 - ADPCM @ 24 and 40 kbits/sec
 ────────────────────────────────────────────────────────────────────────────

PUBLICATIONS
 ────────────────────────────────────────────────────────────────────────────
  MIDI Processing Unit MPU-401 Technical Reference v1.5
   Roland Corporation                                   Roland Corp.   1985
 ────────────────────────────────────────────────────────────────────────────
  Schaum's Outline: Theory and Problems of Acoustics
   William Seto                                         McGraw-Hill    1971
 ────────────────────────────────────────────────────────────────────────────
  Yamaha OPL2 Technical Reference                       CAT#: LSI-6MF2622
   Yamaha Corporation                                   Yamaha Corp.
  +1 408 437-3133 (USA)
 ────────────────────────────────────────────────────────────────────────────
  Yamaha OPL3 Technical Reference                       CAT#: LSI-2438120
   Yamaha Corporation                                   Yamaha Corp.
  +1 408 437-3133 (USA)
 ────────────────────────────────────────────────────────────────────────────

BOOKS
 ────────────────────────────────────────────────────────────────────────────
  The SoundBlaster Book                                 ISBN: 3-88745-560-6
   Josha Munnik, Eric Oostendorp                        SYBEX          1992
 ────────────────────────────────────────────────────────────────────────────
  Das SoundBlaster Profibuch                            ISBN: 3-89319-583-1
   Eckard Lehmann, Tino Riethmueller, Heiko Stassburg   Addison-Wesley 1993
 ────────────────────────────────────────────────────────────────────────────

FILES
 ────────────────────────────────────────────────────────────────────────────
  Audio File Formats FAQ                                AudioFormats.*
    Guido van Rossum
    ftp.cwi.nl::pub/audio                               TEXT
 ────────────────────────────────────────────────────────────────────────────
  DMA Programming Information                           VLA_DMA.ZIP      3K
    Draeden/VLA                                         1993
    x2ftp.oulu.fi::pub/msdos/programming/vla            TEXT
 ────────────────────────────────────────────────────────────────────────────
  Joystick Programming Information                      GAMEPORT.INF     3K
    Bill Frolik                                         1990
    x2ftp.oulu.fi::pub/msdos/programming/specs          TEXT
 ────────────────────────────────────────────────────────────────────────────
  MIDI Standards Documentation                          MIDI*.*
    Various
    ftp.cs.ruu.nl::/pub/MIDI/DOC                        TEXT
 ────────────────────────────────────────────────────────────────────────────
  OPL2 Programming Information                          ADLIB_SB.TXT    20K
    Jeffery Lee                                         1992
    x2ftp.oulu.fi::pub/msdos/programming/faq            TEXT
 ────────────────────────────────────────────────────────────────────────────
  OPL3 Programming Information                          OPL3_DOC.ARJ    18K
    Vladimir Arnost                                     1994
    x2ftp.oulu.fi::pub/msdos/programming/docs           TEXT, GIF
 ────────────────────────────────────────────────────────────────────────────
  PC Game Programmer's Enyclopedia v1.0                 PCGPE10.ZIP    702K
    Mark Feldman                                        1994
    x2ftp.oulu.fi::pub/msdos/programming/gpe            TEXT, PASCAL
 ────────────────────────────────────────────────────────────────────────────
  VBE/AI SDK v1.03                                      VAISDK.EXE     388K
    Video Electronic Standards Association              1994
    ftp.wi.leidenuniv.nl:/pub/audio/programming         TEXT, C
 ────────────────────────────────────────────────────────────────────────────
  Virtual DMA Specification (VDS)                       PW0519.ZIP      47K
    John Hagerson of Microsoft                          1992
    ftp.microsoft.com::Softlib/MSLFILES                 TEXT, WORD
 ────────────────────────────────────────────────────────────────────────────

SOURCE
 ────────────────────────────────────────────────────────────────────────────
  SoundBlaster Freedom Project v3.0                     SBF3.ZIP        85K
    Jeff Bird, Christopher Box                          1994
    x2ftp.oulu.fi::pub/msdos/programming/music          C, ASM
 ────────────────────────────────────────────────────────────────────────────
  SoundBlaster Programming v1.0                         SBPROG10.ZIP    36K
    Christopher Box                                     1993
    x2ftp.oulu.fi::pub/msdos/programming/music          C++, ASM
 ────────────────────────────────────────────────────────────────────────────
  SoundX SoundBlaster Library                           SOUNDX.ZIP      32K
    Peter Sprenger                                      1993
    x2ftp.oulu.fi::pub/msdos/programming/music          C, ASM
 ────────────────────────────────────────────────────────────────────────────
  SNDBLST v4.0                                          SNDBLST4.ZIP    96K
    David Welch                                         1993
    x2ftp.oulu.fi::pub/msdos/programming/music          C
 ────────────────────────────────────────────────────────────────────────────

NEWSGROUPS
 ────────────────────────────────────────────────────────────────────────────
  SoundBlaster Programming
    alt.sb.programmer

  Soundcard Technical Discussion
    comp.sys.ibm.pc.soundcard.tech
    comp.sys.ibm.pc.soundcard.misc
 ────────────────────────────────────────────────────────────────────────────

==============================================================================
 CONTACT ADDRESSES
------------------------------------------------------------------------------
 André Baresel      baresel@informatik.hu-berlin.de     (Internet )
   Cyder of
  Green Apple       André Baresel                       (Snailmail)
                    Hans-Grade-Ring 5
                    14480 Potsdam
                    Germany

 Craig Jackson      Craig.Jackson@launchpad.unc.edu     (Internet )

                    Craig Jackson                       (Snailmail)
                    119 Penwood Drive
                    Cary, North Carolina 27511
                    United States of America